问题
比较两个版本号version1和version2。如果version1> version2返回1,如果version1 <version2返回-1,否则返回0。您可以假定版本字符串为非空,并且仅包含数字和。字符。的。字符不代表小数点,用于分隔数字序列。这是版本号排序的示例:
0.1 <1.1 <1.2 <13.37
Java解决方案
问题的棘手部分是处理1.0和1之类的情况。它们应该相等。
public int compareVersion(String version1, String version2) {
String[] arr1 = version1.split("\\.");
String[] arr2 = version2.split("\\.");
int i=0;
while(i<arr1.length || i<arr2.length){
if(i<arr1.length && i<arr2.length){
if(Integer.parseInt(arr1[i]) < Integer.parseInt(arr2[i])){
return -1;
}else if(Integer.parseInt(arr1[i]) > Integer.parseInt(arr2[i])){
return 1;
}
} else if(i<arr1.length){
if(Integer.parseInt(arr1[i]) != 0){
return 1;
}
} else if(i<arr2.length){
if(Integer.parseInt(arr2[i]) != 0){
return -1;
}
}
i++;
}
return 0;
}