LeetCode 165 比较版本号[双指针] HERODING的LeetCode之路

Posted HERODING23

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 165 比较版本号[双指针] HERODING的LeetCode之路相关的知识,希望对你有一定的参考价值。

解题思路:
C++中分割字符串的函数使用起来不是很方便,所以用C++解决该题,双指针是个不错的办法,定义两个指针分别遍历两个字符串,把“.”间隔的每个小段作为比较的对象,把0去掉的部分进行比较(算数比较),如果哪部分不同就根据大小返回1或者-1,如果都相同,那么最后返回0,代码如下:

class Solution {
public:
    int compareVersion(string version1, string version2) {
        // 定义双指针
        int index1 = 0, index2 = 0;
        // 不超过两个字符串的长度
        while(index1 < version1.length() || index2 < version2.length()) {
            // 每小段(两个.之间)进行比较
            int num1 = 0, num2 = 0;
            while(index1 < version1.length() && version1[index1] != '.')  num1 = num1 * 10 + version1[index1 ++] - '0';
            while(index2 < version2.length() && version2[index2] != '.')  num2 = num2 * 10 + version2[index2 ++] - '0';
            if(num1 < num2) {
                return -1;
            } else if(num1 > num2) {
                return 1;
            } 
            index1 ++;
            index2 ++;
        }
        return 0;
    }
};


/*作者:heroding
链接:https://leetcode-cn.com/problems/compare-version-numbers/solution/cshuang-zhi-zhen-by-heroding-sjc1/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。*/

以上是关于LeetCode 165 比较版本号[双指针] HERODING的LeetCode之路的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 165 比较版本号[双指针] HERODING的LeetCode之路

leetcode 165. 比较版本号

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

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

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

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