题目要求
思路
1.因为字符串比较大小不方便,并且因为需要去掉前导的0,这个0我们并不知道有几个,将字符串转换为数字刚好能避免。
2.当判断到符号位的时候加加,跳过符号位。
3.判断数字大小,来决定版本号大小
4.核心代码
while(i < n1 && version1[i] != '.')
{
num1 = num1 * 10 + (version1[i] - '0');
i++;
}
代码实现
class Solution {
public:
int compare(string version1, string version2) {
int n1 = version1.size();
int n2 = version2.size();
int i = 0;
int j = 0;
while(i < n1 || j < n2)
{
long long num1 = 0;
while(i < n1 && version1[i] != '.')
{
num1 = num1 * 10 + (version1[i] - '0');
i++;
}
i++;
long long num2 = 0;
while(j < n2 && version2[j] != '.')
{
num2 = num2 * 10 + (version2[j] - '0');
j++;
}
j++;
if (num1 > num2)
return 1;
if (num1 < num2)
return -1;
}
return 0;
}
};