题目链接:https://leetcode-cn.com/problems/compare-version-numbers/
题目如下:
class Solution {
public:
vector<int> getnum(string str){//将每个string转化的数字按顺序存放在vector中
vector<int> result;
int length=str.size(),num=0;
for(int i=0;i<length;i++){
if(str[i]=='.') {
result.push_back(num);
num=0;continue;
}
num=num*10+str[i]-'0';
if(i+1==length) result.push_back(num);
}
return result;
}
int compareVersion(string version1, string version2) {
vector<int> arr1;
vector<int> arr2;
arr1=getnum(version1);
arr2=getnum(version2);
int size1=arr1.size(),size2=arr2.size();
int i,j;
for(i=0,j=0;i<size1&&j<size2;i++,j++){
//if(i==size1&&j<size2) i=size1-1;
//if(j==size2&&i<size1) j=size2-1;
if(arr1[i]>arr2[j]) return 1;
else if(arr1[i]<arr2[j]) return -1;
}
//如果在重叠部分数值都相同的情况下,存在多余的非0数值,则当前的这个string较大
if(i!=size1){
for(;i<size1;i++)
if(arr1[i]>0) return 1;
}
else if(j!=size2){
for(;j<size2;j++)
if(arr2[j]>0) return -1;
}
return 0;
}
};