LeetCode 165. 比较版本号
题目链接
题目思想
这个题没啥好说的,就是直接模拟即可,但是要注意Integer包装类的数值大小比较。另外就是字符串分割的时候,"."需要转义处理一下
代码实现
class Solution {
//Integer不能直接比较大小,要么拆箱变成int,要么用equals来比较。
//拆箱可以隐式拆箱,也可以手动调用intValue()来拆箱。
public int compareVersion(String version1, String version2) {
String[] ver1 = version1.split("\\.");
String[] ver2 = version2.split("\\.");
int i = 0;
int j = 0;
while(i < ver1.length && j < ver2.length){
int a = Integer.parseInt(ver1[i]);
int b = Integer.parseInt(ver2[j]);
if(a == b){
i++;
j++;
}else if(a < b){
return -1;
}else if(a > b){
return 1;
}
}
if(i == ver1.length && j == ver2.length){
return 0;
}else if(i == ver1.length){
while(j < ver2.length){
int a = Integer.parseInt(ver2[j]);
if(a > 0){
return -1;
}
j++;
}
}else if(j == ver2.length){
while(i < ver1.length){
int a = Integer.parseInt(ver1[i]);
if(a > 0){
return 1;
}
i++;
}
}
return 0;
}
}