1. 题目

2. 解法
思路
这道题的考点是字符串的处理和分割,以及整数的比较。解题思路是:
- 首先,将两个版本号按照"."分割成字符串数组,这样就可以得到每个修订号的字符串表示。
- 然后,遍历两个数组,比较每个位置上的修订号。为了方便比较,可以将字符串转换成整数,这样就可以忽略前导零的影响。
- 如果某个数组已经遍历完了,就用0代替,这样就可以处理不同长度的版本号的情况。
- 如果发现某个位置上的修订号不相等,就根据它们的大小返回相应的结果。
- 如果遍历完了都没有发现不相等的情况,就返回0,表示两个版本号相等。
具体实现
class Solution {
public int compareVersion(String version1, String version2) {
// 将两个版本号按照"."分割成字符串数组
String[] v1 = version1.split("\\.");
String[] v2 = version2.split("\\.");
// 获取两个数组的长度
int len1 = v1.length;
int len2 = v2.length;
// 遍历两个数组,比较每个位置上的修订号
for (int i = 0; i < Math.max(len1, len2); i++) {
// 如果某个数组已经遍历完了,就用0代替
int num1 = i < len1 ? Integer.parseInt(v1[i]) : 0;
int num2 = i < len2 ? Integer.parseInt(v2[i]) : 0;
// 比较两个数的大小
if (num1 > num2) {
return 1;
} else if (num1 < num2) {
return -1;
}
}
// 如果都相等,就返回0
return 0;
}
}
浙公网安备 33010602011771号