165.比较版本号
根据题意,我们得到以下几个有用信息:
- 以 ’ . ’ 分隔版本号。
- 每段版本号的前置零无意义。
那么,我们分两步来做,首先取出以’ . ’ 分隔的每段版本号,再对每段版本号进行比较。
- 每次记录完一部分版本号,进行比较后,下一次比较前清零。
- 使用数字代替字符串记录更省时间。
class Solution {
public int compareVersion(String version1, String version2) {
int index1 = 0;
int index2 = 0;
int length1 = version1.length();
int length2 = version2.length();
while(index1 < length1 || index2 < length2){
String cmp1 = "0";
String cmp2 = "0";
while(index1 < length1 && version1.charAt(index1) != '.'){
cmp1 = cmp1 + version1.charAt(index1);
index1++;
}
while(index2 < length2 && version2.charAt(index2) != '.'){
cmp2 = cmp2 + version2.charAt(index2);
index2++;
}
if(Integer.valueOf(cmp1) > Integer.valueOf(cmp2)) return 1;
if(Integer.valueOf(cmp1) < Integer.valueOf(cmp2)) return -1;
index1++;
index2++;
}
return 0;
}
}
class Solution {
public int compareVersion(String version1, String version2) {
int index1 = 0;
int index2 = 0;
int length1 = version1.length();
int length2 = version2.length();
while(index1 < length1 || index2 < length2){
int cmp1 = 0;
int cmp2 = 0;
while(index1 < length1 && version1.charAt(index1) != '.'){
cmp1 = cmp1*10 + version1.charAt(index1) - '0';
index1++;
}
while(index2 < length2 && version2.charAt(index2) != '.'){
cmp2 = cmp2*10 + version2.charAt(index2) - '0';
index2++;
}
if(cmp1 > cmp2) return 1;
if(cmp1 < cmp2) return -1;
index1++;
index2++;
}
return 0;
}
}
class Solution {
public:
int compareVersion(string version1, string version2) {
int index1 = 0;
int index2 = 0;
int length1 = version1.length();
int length2 = version2.length();
while(index1 < length1 || index2 < length2){
//这里对进行以'.'进行分割修订号的更新
int cmp1 = 0;
int cmp2 = 0;
while(index1 < length1 && version1[index1] != '.'){
cmp1 = cmp1*10 + version1[index1] - '0';
index1++;
}
while(index2 < length2 && version2[index2] != '.'){
cmp2 = cmp2*10 + version2[index2] - '0';
index2++;
}
if(cmp1 > cmp2) return 1;
if(cmp1 < cmp2) return -1;
index1++;
index2++;
}
return 0;
}
};
两次执行用时为0的提交为字符串模拟
2021.9.1