4.比较版本号-字符串比较

时间:2021-08-23
本文章向大家介绍4.比较版本号-字符串比较,主要包括4.比较版本号-字符串比较使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

题目描述

给你两个版本号 version1version2 ,请你比较它们。

版本号由一个或多个修订号组成,各修订号由一个 . 连接。每个修订号由多位数字组成,可能包含前导零。每个版本号至少包含一个字符。修订号从左到右编号,下标从0开始,最左边的修订号下标为0,下一个修订号下标为1,以此类推。例如,2.5.330.1都是有效的版本号。

比较版本号时,请按从左到右的顺序依次比较它们的修订号。比较修订号时,只需比较 忽略任何前导零后的整数值 。也就是说,修订号 1 和修订号 001 相等 。如果版本号没有指定某个下标处的修订号,则该修订号视为0。例如,版本1.0小于版本1.1,因为它们下标为0的修订号相同,而下标为1的修订号分别为010<1

返回规则如下:

如果 version1 > version2 返回 1,
如果 version1 < version2 返回 -1,
除此之外返回 0。

思路

以`.`为分割分别比较每个修订号所代表的字符串的大小,
可用10进制转化的方式存到`int`里,注意当一个修订号为`0`,
另一个为`""`时,也要进行比较。

代码

class Solution {
public:
    int compareVersion(string version1, string version2) {
        int n1 = version1.size();
        int n2 = version2.size();
        int cur1 = 0, cur2 = 0;
        while(cur1 < n1 || cur2 < n2){
            int num1 = 0, num2 = 0;
            while(cur1 < n1 && version1[cur1] != '.'){
                num1 = num1 * 10 + version1[cur1] - '0';
                cur1++;
            }
            while(cur2 < n2 && version2[cur2] != '.'){
                num2 = num2 * 10 + version2[cur2] - '0';
                cur2++;
            }
            if(num1 > num2) return 1;
            if(num1 < num2) return -1;
            cur1++;
            cur2++;
        }
        return 0; 
    }
};

原文地址:https://www.cnblogs.com/zesn/p/15175189.html