class Solution { public: // 官解二 需要额外存储的思路 只当联系对字符串的处理 // 积累! // 把一个字符串 按给定 字符 分割 并返回 字符串的vec vector<string> split(const string&str, const char& delim) { vector<string> res; stringstream ss(str); string tmp; while(getline(ss, tmp, delim)) { if(!tmp.empty()) res.push_back(std::move(tmp)); } return res; } int strs2num(string& ss) { int ret = 0; for(char c:ss) { int d = c-'0'; ret = 10*ret + d; } return ret; } /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * 比较版本号 * @param version1 string字符串 * @param version2 string字符串 * @return int整型 */ int compare(string version1, string version2) { // write code here vector<string> arr1 = split(version1, '.'); vector<string> arr2 = split(version2, '.'); int m = arr1.size(); int n = arr2.size(); int i=0, j=0; int num1 =0, num2 = 0; while(i<m || j<n) { num1 = 0; num2 = 0; if(i<m) { // 分别转为数字 string ss1 = arr1[i]; num1 = strs2num(ss1); } if(j<n) { string ss2 = arr2[j]; num2 = strs2num(ss2); } if(num1<num2) { return -1; } else if(num1>num2) { return 1; } i++; j++; } return 0; } };