美文网首页
版本比较

版本比较

作者: 赵老拖 | 来源:发表于2022-03-10 00:30 被阅读0次

    描述

    牛客项目发布项目版本时会有版本号,比如1.02.11,2.14.4等等
    现在给你2个版本号version1和version2,请你比较他们的大小
    版本号是由修订号组成,修订号与修订号之间由一个"."连接。1个修订号可能有多位数字组成,修订号可能包含前导0,且是合法的。例如,1.02.11,0.1,0.2都是合法的版本号
    每个版本号至少包含1个修订号。
    修订号从左到右编号,下标从0开始,最左边的修订号下标为0,下一个修订号下标为1,以此类推。

    比较规则:
    一. 比较版本号时,请按从左到右的顺序依次比较它们的修订号。比较修订号时,只需比较忽略任何前导零后的整数值。比如"0.1"和"0.01"的版本号是相等的
    二. 如果版本号没有指定某个下标处的修订号,则该修订号视为0。例如,"1.1"的版本号小于"1.1.1"。因为"1.1"的版本号相当于"1.1.0",第3位修订号的下标为0,小于1
    三. version1 > version2 返回1,如果 version1 < version2 返回-1,不然返回0.

    import java.util.*;
    import java.math.BigInteger;
    
    public class Solution {
        /**
         * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
         *
         * 比较版本号
         * @param version1 string字符串 
         * @param version2 string字符串 
         * @return int整型
         */
        public int compare (String version1, String version2) {
            // write code here
            String[] num1List = version1.split("\\.");
            String[] num2List = version2.split("\\.");
            int len = Math.min(num1List.length,num2List.length);
            //先比较公共部分
            for(int i = 0;i<len;i++){
               //long int目前都不满足数字长度要求,使用BigInteger
                BigInteger num1 = new BigInteger(num1List[i]);
                BigInteger num2 = new BigInteger(num2List[i]);
             
                if(num1.compareTo(num2) == 0){
                    continue;
                }else if(num1.compareTo(num2)<0){
                    return -1;
                }else{
                    return 1;
                }
            }
           //比较多出来部分
            if(num1List.length>num2List.length){
                for(int i = len;i<num1List.length;i++){
                    BigInteger num1 = new BigInteger(num1List[i]);
                    if(num1.compareTo(new BigInteger("0")) != 0){
                        return 1;
                    }
                }
            }else if(num1List.length<num2List.length){
                 for(int i = len;i<num2List.length;i++){
                    BigInteger num2 = new BigInteger(num2List[i]);
                    if(num2.compareTo(new BigInteger("0")) != 0){
                        return -1;
                    }
                }
            }
                return 0 ;
            
        }
    }
    

    相关文章

      网友评论

          本文标题:版本比较

          本文链接:https://www.haomeiwen.com/subject/afzxdrtx.html