使用atoi
函数可以免去前导0
的去除,但要注意参数类型。
class Solution {
public:
int compareVersion(string version1, string version2) {
int len_1 = version1.size(), len_2 = version2.size();
int i = 0, j = 0;
while (i < len_1 || j < len_2)
{
int cur_1 = i, cur_2 = j; //cur表示当前版本段的结束下标
while (cur_1 < len_1 && version1[cur_1] != '.') cur_1 ++ ;
while (cur_2 < len_2 && version2[cur_2] != '.') cur_2 ++ ;
//atoi()的参数是const char*,因此对于一个字符串str我们必须调用c_str()方法把这个string转换成const char*类型
int a = (i == cur_1) ? 0 : atoi(version1.substr(i, cur_1 - i).c_str());
int b = (j == cur_2) ? 0 : atoi(version2.substr(j, cur_2 - j).c_str());
if (a > b) return 1;
else if (a < b) return -1;
i = cur_1 + 1, j = cur_2 + 1;
}
return 0;
}
};