本人的做法是转化成vector再处理,各种情况就比较简单了。
class Solution { public: int compareVersion(string version1, string version2) { vector<int> v1 = convert(version1); vector<int> v2 = convert(version2); int size = min(v1.size(), v2.size()); for (int i = 0; i < size; i++) { if (v1[i] < v2[i]) { return -1; } else if (v1[i] > v2[i]) { return 1; } } if (v1.size() > size) return 1; if (v2.size() > size) return -1; return 0; } vector<int> convert(string &version) { vector<int> result; int len = version.size(); int num = 0; for (int i = 0; i < len; i++) { if (version[i] == '.') { result.push_back(num); num = 0; } else { num = num * 10 + (version[i] - '0'); } } result.push_back(num); while (result.back() == 0) { result.pop_back(); } return result; } };