题目来源:https://leetcode-cn.com/problems/compare-version-numbers/
大致题意:
给定两个字符串,字符串是 形似 2.56.065.6 的版本号,比较两个版本号的大小。
规则:从左至右依次比较每级版本的大小
思路
字符串分割
- 将两个字符串按照字符 “.” 分割成字符串数组。注意,需要给该字符加上转义字符才可以正确识别,即 “\.”
- 按照最长的字符串数组长度为边界,依次遍历两个字符串数组
- 为了防止某个字符串数组长度不够(如 1.0.0 和 1.0.0.0.0.0.0 相比),初始时设当前代比较的版本号都为 0
- 若当前遍历索引小于字符串数组长度,便按照当前数组索引位的重新赋值
- 若当前级两个版本号不同,则对比返回结果
代码:
public int compareVersion(String version1, String version2) {
// 分割版本
String[] str1 = version1.split("\\.");
String[] str2 = version2.split("\\.");
for (int i = 0; i < Math.max(str1.length,str2.length); i++) {
// 先设置初始值,防止某一个版本号长度不够
int num1 = 0;
int num2 = 0;
// 若当前长度未越界,按实际值更新
if (i < str1.length) {
num1 = Integer.valueOf(str1[i]);
}
// 若当前长度未越界,按实际值更新
if (i < str2.length) {
num2 = Integer.valueOf(str2[i]);
}
// 版本不同,直接返回对比结果
if (num1 != num2) {
return num1 > num2 ? 1 : -1;
}
}
return 0;
}
该博客介绍了一个LeetCode问题,题目是对比两个版本号的大小。通过将版本号字符串按点分割成数组,然后逐级比较每个版本号部分的整数值来实现比较。如果在某一级发现两个版本号不同,就直接返回比较结果,否则继续比较下一级,直到遍历完所有部分。最终,如果所有级别都相同,则返回0表示两个版本号相等。
931

被折叠的 条评论
为什么被折叠?



