165. Compare Version Numbers 发表于 2022-01-27 Recursion1234567891011121314151617181920212223242526272829303132public int compareVersion(String version1, String version2) { int v1 = 0, v2 = 0; int i1 = 0; while (i1 < version1.length() && version1.charAt(i1) != '.') { v1 = v1 * 10 + (version1.charAt(i1++) - '0'); } int i2 = 0; while (i2 < version2.length() && version2.charAt(i2) != '.') { v2 = v2 * 10 + (version2.charAt(i2++) - '0'); } int diff = v1 - v2; if (diff < 0) { return -1; } else if (diff > 0) { return 1; } else { if (i1 == version1.length() && i2 == version2.length()) { return 0; } if (i1 == version1.length()) { return compareVersion("0", version2.substring(i2 + 1)); } else if (i2 == version2.length()) { return compareVersion(version1.substring(i1 + 1), "0"); } return compareVersion(version1.substring(i1 + 1), version2.substring(i2 + 1)); }} Two Pointers1234567891011121314151617181920212223class Solution { public int compareVersion(String version1, String version2) { int i = 0, j = 0; while (i < version1.length() || j < version2.length()) { int v1 = 0, v2 = 0; while (i < version1.length() && version1.charAt(i) != '.') { v1 = v1 * 10 + (version1.charAt(i++) - '0'); } i++; // skip dot while (j < version2.length() && version2.charAt(j) != '.') { v2 = v2 * 10 + (version2.charAt(j++) - '0'); } j++; // skip dot if (v1 != v2) { return v1 > v2 ? 1 : -1; } } return 0; }} Reference165. Compare Version Numbers