165. 比较版本号
查看题目中等
字符串
中频
解法一:split-and-compare
时间复杂度:O(n + m) | 空间复杂度:O(n + m) | 推荐使用
动画演示
比较版本号
版本号 1 分割结果
版本号 2 分割结果
比较过程
0
0
当前比较第 1 部分
操作日志
代码实现
class Solution {
public int compareVersion(String version1, String version2) {
// 将版本号分割成数组
String[] v1 = version1.split("\.");
String[] v2 = version2.split("\.");
int i = 0;
int j = 0;
// 比较两个版本号的每一部分
while (i < v1.length || j < v2.length) {
// 将当前部分转换为整数,如果超出数组长度则视为0
int num1 = i < v1.length ? Integer.parseInt(v1[i]) : 0;
int num2 = j < v2.length ? Integer.parseInt(v2[j]) : 0;
// 比较当前部分
if (num1 < num2) {
return -1;
} else if (num1 > num2) {
return 1;
}
// 移动指针
i++;
j++;
}
// 所有部分都相等,返回0
return 0;
}
}时间复杂度:O(n + m)
空间复杂度:O(n + m)