问题描述
分析:
采用双指针的方法,进行解析和比较,省去存储切分后的块的开销,
复杂度分析:
时间复杂度:O(max(m, n)),其中m, n分别为两个字符串长度。需要遍历到较长字符串的尽头
空间复杂度:O(1),只用到了常数个变量
解决方案:
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* 比较版本号
* @param version1 string字符串
* @param version2 string字符串
* @return int整型
*/
int compare(string version1, string version2) {
// write code here
int n1 = version1.size();
int n2 = version2.size();
int i = 0, j = 0;
while (i < n1 || j < n2) {
long num1 = 0, num2 = 0;
while (i < n1 && version1[i] != '.') {
num1 = num1 * 10 + (version1[i] - '0');
i++;
}
//跳过'.'
i++;
while (j < n2 && version2[j] != '.') {
num2 = num2 * 10 + (version2[j] - '0');
j++;
}
//跳过'.'
j++;
if (num1 > num2)
return 1;
else if (num1 < num2)
return -1;
}
return 0;
}
};