public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* 比较版本号
* @param version1 string字符串
* @param version2 string字符串
* @return int整型
*/
int compare(string version1, string version2) {
// write code here
int len1 = version1.size(), len2 = version2.size(); //保存长度
int i=0, j=0;
while(i<len1 || j<len2){ // 只要满足其中一个字符串还没读完,就继续比(可以跟0比较)
long x = 0; //x存version1中每一节的数据,可能超过整型范围,所以用long
long y = 0; /y存version2中每一节的数据,可能超过整型范围,所以用long
// 都赋初值为0,比较巧妙。(如果下一轮比较都从0开始重新计算值,要不就是其中一个已经读取完毕,相当于拿另一个版本的其中一节跟0做比较)
while(i<len1 && version1[i]!='.'){
x = x * 10 + (version1[i] - '0'); // 用数存起来 比大小
i++;
}
i++;
while(j<len2 && version2[j]!='.'){
y = y * 10 + (version2[j] - '0');
j++;
}
j++;
if(x > y){
return 1;
}else if (x < y){
return -1;
}
}
return 0; //读取完两个版本,都没有上述情况,那说明两个版本相等。
}
};