LeetCode 165. 比较版本号
Posted 数据结构和算法
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 165. 比较版本号相关的知识,希望对你有一定的参考价值。
截止到目前我已经写了 600多道算法题,其中部分已经整理成了pdf文档,目前总共有1000多页(并且还会不断的增加),大家可以免费下载
下载链接:https://pan.baidu.com/s/1hjwK0ZeRxYGB8lIkbKuQgQ
提取码:6666
这题让比较版本号,版本号是由一串数字通过小数点(.
)分开的。我们每次先比较小数点前面的数字,确定是否相等,如果不相等直接返回,不需要再比较后面的值了。如果相等,就要继续后面值的比较。这题基本上没有什么难度,我们来看下代码。
public int compareVersion(String version1, String version2) {
int len1 = version1.length();//第一个版本号的长度
int len2 = version2.length();//第二个版本号的长度
int index1 = 0;//访问到第一个版本号字符的位置
int index2 = 0;//同上
while (index1 < len1 || index2 < len2) {
int ver1 = 0;
int ver2 = 0;
//先把第一个版本号(.)前面的数字转换成int类型
while (index1 < len1 && version1.charAt(index1) != '.') {
ver1 = ver1 * 10 + version1.charAt(index1++) - '0';
}
//在把第二个版本号(.)前面的数字转换成int类型
while (index2 < len2 && version2.charAt(index2) != '.') {
ver2 = ver2 * 10 + version2.charAt(index2++) - '0';
}
//比较这两个数字的大小,如果不相等直接返回
if (ver1 > ver2) {
return 1;
} else if (ver1 < ver2) {
return -1;
} else {
//如果这两个数字相等,就继续后面的比较,
//这里都加1表示跳过符号(.)
index1++;
index2++;
}
}
return 0;
}
时间复杂度:O(m+n)
,m
和n
分别表示两个字符串的长度。
空间复杂度:O(1)
。
以上是关于LeetCode 165. 比较版本号的主要内容,如果未能解决你的问题,请参考以下文章