Compare two version numbers version1 and version2.
If version1 > version2 return 1, if version1 < version2 return -1, otherwise return 0.
You may assume that the version strings are non-empty and contain only digits and the .
character.
The .
character does not represent a decimal point and is used to separate number sequences.
For instance, 2.5
is not "two and a half" or "half way to version three", it is the fifth second-level revision of the second first-level revision.
Here is an example of version numbers ordering:
0.1 < 1.1 < 1.2 < 13.37
Solution:
Attention: The version string may have multiple "."
Split the two strings and convert them to int arrays. Then compare the ints at the same index. If one array is longer than the other, check whether the rest elements in the longer array equal to 0. If they are all 0s, the two versions are the same, return 0. If any of them does not equal to 0, the longer version is greater.
public class Solution {
public int compareVersion(String version1, String version2) {
String[] v1 = version1.split("\\.");
String[] v2 = version2.split("\\.");
int[] nums1 = new int[v1.length];
int[] nums2 = new int[v2.length];
for (int i = 0; i < v1.length; i++) {
nums1[i] = Integer.parseInt(v1[i]);
}
for (int i = 0; i < v2.length; i++) {
nums2[i] = Integer.parseInt(v2[i]);
}
int i = 0;
for (;i < nums1.length && i < nums2.length; i++) {
if (nums1[i] > nums2[i]) {
return 1;
} else if (nums1[i] < nums2[i]) {
return -1;
}
}
for (;i < nums1.length; i++) {
if (nums1[i] != 0) {
return 1;
}
}
for (;i < nums2.length; i++) {
if (nums2[i] != 0) {
return -1;
}
}
return 0;
}
}