-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCompareVersionNumbers_165.java
More file actions
35 lines (29 loc) · 1.04 KB
/
CompareVersionNumbers_165.java
File metadata and controls
35 lines (29 loc) · 1.04 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
/**
* XXXXXXXXX The following are wrong when I first do it!
* 1. dot is a regular expression => use \\. to split
* 2. what if no dot?
* 3. support multiple dot?
* 4. 1.0 > 1 ? no
*/
public class Solution {
public int compareVersion(String version1, String version2) {
// XXXX . is regular expression, use \\ instead
String[] v1 = version1.split("\\.");
String[] v2 = version2.split("\\.");
int length = Math.min(v1.length, v2.length);
int i = 0;
for (; i<length; i++) {
if (compare(v1[i], v2[i]) != 0) return compare(v1[i], v2[i]);
}
for (; i<v1.length; i++) {
if (compare(v1[i], "0") != 0) return compare(v1[i], "0");
}
for(; i<v2.length; i++) {
if (compare("0", v2[i]) != 0) return compare("0", v2[i]);
}
return 0;
}
int compare(String v1, String v2) {
return Integer.valueOf(v1).compareTo(Integer.valueOf(v2)); // XXXXXXXX Integer compareTo
}
}