题目来源: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;
}