算法题22:比较版本号
思路
- step 1:利用两个指针表示字符串的下标,分别遍历两个字符串;
- step 2:每次截取点之前的数字字符组成数字,即在遇到一个点之前,直接取数字,加在前面数字乘10的后面;
- step 3:然后比较两个数字大小,根据大小关系返回1或者-1,如果全部比较完都无法比较出大小关系,则返回0。
代码
int l1 = 0;
int l2 = 0;
int num1 = 0;
int num2 = 0;
while(l1 < version1.length() || l2 < version2.length()){
num1 = 0;
while(l1 < version1.length() && version1[l1] != '.'){
if(num1 == 0 && version1[l1] == '0') l1++;
else{
num1 *= 10;
num1 += version1[l1] - '0';
l1++;
}
}
l1++;
num2 = 0;
while(l2 < version2.length() && version2[l2] != '.'){
if(num2 == 0 && version2[l2] == '0') l2++;
else{
num2 *= 10;
num2 += version2[l2] - '0';
l2++;
}
}
l2++;
if(num1 > num2) return 1;
if(num1 < num2) return -1;
}
return 0;
}