1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Solution {
public int compareVersion(String version1, String version2) {
String[] revisions1 = version1.split("\\.");
String[] revisions2 = version2.split("\\.");
int ptr1 = 0, ptr2 = 0, ans = 0;
while (ptr1 < revisions1.length || ptr2 < revisions2.length) {
int revision1 = ptr1 >= revisions1.length ? 0 : Integer.parseInt(revisions1[ptr1]);
int revision2 = ptr2 >= revisions2.length ? 0 : Integer.parseInt(revisions2[ptr2]);
if (revision1 < revision2) {
ans = -1;
break;
} else if (revision1 > revision2) {
ans = 1;
break;
} else {
ptr1 += 1;
ptr2 += 1;
}
}
return ans;
}
}

点把version给分成不同块儿, 相对应的块儿之间比较. 如果某个version没有对应的块儿, 那么默认是0.

这一题需要注意的是转义符号是两个反斜杠: \

时间复杂度: O(m + n + m + n) 第一个m + n是split, 第二个m + n是parse.
空间复杂度: O(m + n) 我们创建了两个String array.