https://www.nowcoder.com/practice/2b317e02f14247a49ffdbdba315459e7
思路:每次取最前的一个版本号进行判断
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* 比较版本号
* @param version1 string字符串
* @param version2 string字符串
* @return int整型
*/
int compare(string version1, string version2) {
int i = 0, j = 0;
for(; i < version1.size(); ++i){
if (version1[i] == '.') // 定位version1中的第一个小数点
break;
}
for(; j < version2.size(); ++j){
if (version2[j] == '.') // 定位version2中的第一个小数点
break;
}
int num1 = stoi(version1.substr(0, i)); // version1中的第一个数字
int num2 = stoi(version2.substr(0, j)); // version2中的第一个数字
if (num1 > num2) {
return 1; // version1大于version2
} else if (num1 < num2) {
return -1; // version1小于version2
} else if (i == version1.size() && j == version2.size()) {
return 0; // 当前版本号相等,且version1和version2都没有更小的版本号
}
string s1, s2;
if (i == version1.size())
s1 = "0"; // version1没有更小的版本号,用0补齐
else
s1 = version1.substr(i + 1, -1);
if (j == version2.size())
s2 = "0"; // version2没有更小的版本号,用0补齐
else
s2 = version2.substr(j + 1, -1);
return compare(s1, s2); // 判断下一个小版本号
}
};