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)mn分别表示两个字符串的长度。
空间复杂度O(1)

以上是关于LeetCode 165. 比较版本号的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode第165题—比较版本号—Python实现

LeetCode第165题—比较版本号—Python实现

LeetCode 165. 比较版本号c++/java详细题解

leetcode 165. 比较版本号

Leetcode No.165 比较版本号

5-105-(LeetCode- 165) 比较版本号