CompareVersionNumbers

大模拟吧…细节蛮多的(这个题我发现全是踩所以写一篇…)

我是将字符串分割读入vector中 然后去掉vector中的末尾0

按照比较字典序大小的方法逐个比较vector中的元素

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
class Solution {
public:
vector<int> div(string s){
int ss=s.size();
vector<int>ans;
for(int i=0;i<ss;){
if(isdigit(s[i])){
int cnt=0;
while(isdigit(s[i])){
cnt=cnt*10+s[i]-'0';
i++;
}
if(cnt!=0)ans.push_back(cnt);
}
else i++;
}
return ans;
}
int compareVersion(string version1, string version2) {
vector<int>v1=div(version1);
vector<int>v2=div(version2);
for(int i=0;i<min(v1.size(),v2.size());i++){
if(v1[i]>v2[i]) return 1;
else if(v1[i]<v2[i]) return -1;
}
if(v1.size()>v2.size()) return 1;
else if(v2.size()>v1.size()) return -1;
return 0;
}
};