首页 > 其他 > 详细

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

时间:2021-08-23 14:56:09      阅读:24      评论:0      收藏:0      [点我收藏+]

题目描述

给你两个版本号 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; 
    }
};

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

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!