题解 | 比较版本号
比较版本号
https://www.nowcoder.com/practice/2b317e02f14247a49ffdbdba315459e7
class Solution { public: /** 分部分进行比较,去除前导零,每部分比完清零,不止有三节 */ int compare(string version1, string version2) { int num1 = 0, num2 = 0; int index1 = 0, index2 = 0; while (index1 < version1.size() || index2 < version2.size()) { get_num(index1, num1, version1); get_num(index2, num2, version2); if (num1 - num2 > 0) { return 1; } else if (num1 - num2 < 0) { return -1; } num1=0, num2=0; index1++; index2++; } return 0; } void get_num(int& index, int& num, string& version) { while (index < version.size() && version[index] == '0') { //忽略前导零 index++; } while (index < version.size() && version[index] != '.') { num = num * 10 + (version[index] - '0'); index++; } } };