题目
代码
做到这种有病的题算我倒霉…
public static int compareVersion(String version1, String version2) {
String[] v1 = version1.split("\\.");
String[] v2 = version2.split("\\.");
for(int i=0;i<Math.min(v1.length, v2.length);i++) {
if(v1[i].equals(v2[i])) continue;
//如果有0 且0为前导 则删除
if(v1[i].charAt(0)=='0' && v1[i].length()!=1) {
int j=0;
while(j!=v1[i].length() &&v1[i].charAt(j)=='0') j++;
if(j==v1[i].length()) v1[i]="0";
else v1[i] = v1[i].substring(j);
}
if(v2[i].charAt(0)=='0' && v2[i].length()!=1) {
int j=0;
while(j!=v2[i].length() &&v2[i].charAt(j)=='0') j++;
if(j==v2[i].length()) v2[i]="0";
else v2[i] = v2[i].substring(j);
}
if(v1[i].equals(v2[i])) continue;
if(Integer.valueOf(v1[i])<Integer.valueOf(v2[i])) return -1;
else return 1;
}
//如果走到这里 有的串后面还有长度 且这些长度存在0之外的数字 则是这个串版本号高
String[] v;
if(v1.length!=v2.length) {
if(v1.length>v2.length) v=v1;
else v=v2;
for(int i=Math.min(v1.length, v2.length);i<Math.max(v1.length, v2.length);i++) {
if(Integer.valueOf(v[i])!=0) {
if(v==v1) return 1;
else return -1;
}
}
}
return 0;
}