/*解题思路:比较每个.之间的数字即可,但是题中有一些小trick,需要注意。*/
class Solution {
public:
int compareVersion(string version1, string version2) {
size_t i1 = 0, i2 = 0;
size_t left1 = 0, left2 = 0;
int n1, n2;
while(i1 < version1.size() || i2 < version2.size()){
n1 = 0;
while(i1 < version1.size()){
if(i1 == version1.size()-1){
n1 = string2num(version1.substr(left1, i1 - left1 + 1));
++i1;
break;
}
else if(version1[i1] == '.'){
n1 = string2num(version1.substr(left1, i1 - left1));
left1 = i1 + 1;
++i1;
break;
}
++i1;
}
n2 = 0;
while(i2 < version2.size()){
if(i2 == version2.size() - 1){
n2 = string2num(version2.substr(left2, i2 - left2 + 1));
++i2;
break;
}
else if(version2[i2] == '.'){
n2 = string2num(version2.substr(left2, i2 - left2));
left2 = i2 + 1;
++i2;
break;
}
++i2;
}
if(n1 < n2) return -1;
else if(n1 > n2) return 1;
}
return 0;
}
int string2num(const string &s){
if(s.empty()) return 0;
int num;
stringstream stream;
stream << s;
stream >> num;
return num;
}
};LeetCode之Compare Version Numbers
最新推荐文章于 2019-09-06 20:06:31 发布
本文介绍了一种用于比较软件版本号的算法实现。通过逐个解析并比较版本号字符串中的数字部分,该算法能够准确判断两个版本号之间的大小关系。特别地,文章提供了一个C++示例,展示了如何处理包含额外点号或前导零的情况。
1027

被折叠的 条评论
为什么被折叠?



