class Solution { public: //这里要注意点有 1.用字符串转int,使用方法stio会超内存 // 2.字符串的比较,用大于小于的话,,默认字典集,也就是依次从左往右进行比较,当遇到大的就直接返回 int compare(string version1, string version2) { //只需要比较几个点号 //考虑特殊情况,万一有只有一个点的 long long prat1 ; long long prat2; int i = 0; int j = 0; int n1 = version1.size(); int n2 = version2.size(); while (i < n1 || j < n2 ) { if (i < n1) { while (version1[i] == '0') i++; while (version1[i] != '.'&& i < n1) { prat1 = prat1 * 10 + (version1[i] - '0') ; i++; } i++; } if (j < n2) { while (version2[j] == '0') j++; while (version2[j] != '.'&& j < n2) { prat2 = prat2 * 10 + (version2[j] - '0') ; j++; } j++;//用来跳过点,这里不加ifpanding都行,因为当上面的while退出来要么真的是下标j对应的真是. 要么就是j越界了,而当j越界那么j加1后也不会进到这里的第二个while中 part2就永远等于0; } if (prat1 > prat2) return 1; else if (prat2> prat1) return -1; prat1 = 0; prat2 = 0; } return 0; } };