题解 | 比较版本号
比较版本号
https://www.nowcoder.com/practice/2b317e02f14247a49ffdbdba315459e7
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* 比较版本号
* @param version1 string字符串
* @param version2 string字符串
* @return int整型
*/
public int compare (String version1, String version2) {
// write code here
//看懂了----双指针进行比较
int len1 = version1.length();
int len2 = version2.length();
int i = 0, j = 0;
while(i < len1 || j < len2){//直到某个字符串遍历结束
long num1 = 0;
//从下一个点前截取数字
while(i < len1 && version1.charAt(i) != '.'){
num1 = num1 * 10 + (version1.charAt(i) - '0');//备注:两个字符相减结果是其ASCII码的差值
//这里就排除了‘0’
i ++;
}
i ++;//跳过一个点
long num2 = 0;
//从下一个点前截取数字
while(j < len2 && version2.charAt(j) != '.'){
num2 = num2 * 10 + (version2.charAt(j) - '0');//备注:两个字符相减结果是其ASCII码的差值
//这里就排除了‘0’
j ++;
}
j ++;//跳过一个点
//然后比较两个数字的大小
if(num1 > num2){
return 1;
}
if(num1 < num2){
return -1;
}
}
//分析
/**
若是i < len1 && j < len2,则需要,否则while循环一直在继续,num1 = 0 或 num2 = 0了,结果也就很明显了
所以上面是考虑到两个版本号长度不同的比较规则
*/
return 0;
}
}
查看13道真题和解析