题目有一点没说明白,就是这个‘.’可能不止一个,可能有好多个,比如1.1.1.1.1.1.1
所以方式就是把所有的数字都提取出来,并且将两个数组用0对齐。
然后再比较。
int compareVersion(string version1, string version2) {
vector<int> vec1 = stringToArray(version1);
vector<int> vec2 = stringToArray(version2);
int len1 = vec1.size();
int len2 = vec2.size();
while(len1<len2){
vec1.push_back(0);
len1++;
}
while(len2<len1){
vec2.push_back(0);
len2++;
}
for (int i = 0;i<len1;i++){
if(vec1[i]<vec2[i]) return -1;
else if(vec1[i]>vec2[i]) return 1;
}
return 0;
}
vector<int> stringToArray(string str){
vector<int> vec;
int cur = 0;
int index;
string subStr;
while((index = str.find('.',cur)) != -1){
subStr = str.substr(cur,index - cur);
vec.push_back(atoi(subStr.c_str()));
cur = index + 1;
}
subStr = str.substr(cur,str.size());
vec.push_back(atoi(subStr.c_str()));
return vec;
}