大模拟吧…细节蛮多的(这个题我发现全是踩所以写一篇…)
我是将字符串分割读入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; } };
|