class Solution { public: // 我自己的解法 /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * 比较版本号 * @param version1 string字符串 * @param version2 string字符串 * @return int整型 */ int compare(string version1, string version2) { // write code here // 双指针 int m = version1.size(); int n = version2.size(); int num1=0, num2=0; int pt1 = 0, pt2 = 0; char c1, c2; while(pt1<m || pt2<n) // 这里只要二者之一没遍历完 就继续 因为会有两者长度不一致 1.0.1, 1 { while(version1[pt1]!='.' && pt1<m)// 累加数字 直到遇到. { c1 = version1[pt1]; int d1 = c1-'0'; num1 = 10*num1 + d1; pt1++; } while(version2[pt2]!='.' && pt2<n) //如果其中一个较短 那之后num就是0 也是有效的 { c2 = version2[pt2]; int d2 = c2-'0'; num2 = 10*num2 + d2; pt2++; } if(num1>num2) // 相等的情况就不管 继续 { return 1; } else if(num1<num2) { return -1; } // 比完1个修订号之后 就清零 num1 = 0; num2 = 0; pt1++; pt2++; } // if(pt1<m) // return 1; // if(pt2<n) // return -1; return 0 ; } };