题解 | #比较版本号#
比较版本号
https://www.nowcoder.com/practice/2b317e02f14247a49ffdbdba315459e7
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * 比较版本号 * @param version1 string字符串 * @param version2 string字符串 * @return int整型 */ int compare(string version1, string version2) { // write code here string stringA = version1; string stringB = version2; vector<int> intA; vector<int> intB; //先删除前面的0和点 int i = 0; int j = 0; while (stringA.size() > 0 && i<stringA.size()) { if(stringA[i] == '.'){ int tmp = stoi(stringA.substr(0, i)); cout<<"tmp的数值"<< tmp <<endl; intA.push_back(tmp); stringA.erase(stringA.begin(), stringA.begin()+i+1); i = 0; cout<<"stringA剩余"<<stringA<<endl; } else{ i++; } } if(stringA.size()>0){ int tmp = stoi(stringA); intA.push_back(tmp); } while (stringB.size() > 0 && j<stringB.size()) { if(stringB[j] == '.'){ int tmp = stoi(stringB.substr(0, j)); cout<<"tmp的数值"<< tmp <<endl; intB.push_back(tmp); stringB.erase(stringB.begin(), stringB.begin()+j+1); j = 0; cout<<"stringB剩余"<<stringA<<endl; } else{ j++; } } if(stringB.size()>0){ int tmp = stoi(stringB); intB.push_back(tmp); } for(int x = 0;x<intA.size();x++) cout<<intA[x]; cout<<endl; for(int x = 0;x<intB.size();x++) cout<<intB[x]; cout<<endl; if(intA.size()>intB.size()){ for(int x = 0;intA.size()-intB.size();x++){ intB.push_back(0); } } else if (intA.size()<intB.size()) { for(int x = 0;intB.size()-intA.size();x++){ intA.push_back(0); } } for(int t = 0; t<intA.size();t++){ cout<<"开始比较"<<intA[t]<<","<<intB[t]<<endl; if(intA[t]>intB[t]){ return 1; } else if(intA[t]<intB[t]){ return -1; } } return 0; } };