/*解题思路:比较每个.之间的数字即可,但是题中有一些小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-06-13 10:54:02 发布