LeetCode0165-版本号对比

给两个版本号,返回版本号的对比结果

public class Num165_compareversion {

        public static int compareVersion(String version1, String version2) {

            String[] s1 = version1.split("\\.");
            String[] s2 = version2.split("\\.");

            int l1 = s1.length-1;
            int l2 = s2.length-1;
            int l = Math.max(l1,l2);
            int result =0,i=0;
//            注意这里,我用了 for循环,错误了
//            然后是i<=l,不是i<l
            while(i<=l){
                String num1 =  i<=l1? s1[i]:"0";
                String num2 =  i<= l2? s2[i]:"0";
                result = compare(num1,num2);
                if(result ==0){ i++;}
                else{return result;}
            }
            return 0;
        }

        public static  int compare(String nums1,String nums2){

            // 去掉前导0
            String numsa = delete0(nums1);
            String numsb = delete0(nums2);
            int l1 = numsa.length();
            int l2 =  numsb.length();
            if(l1<l2) return -1;
            else if(l1>l2) return 1;
            else {
                for(int i=0;i<l1;i++){
                    if(numsa.charAt(i)-numsb.charAt(i)>0){
                        return 1;
                    }
                    else if (numsa.charAt(i)-numsb.charAt(i)<0){
                        return -1;
                    }
                }
            }
            return 0;
        }

        public static String delete0(String nums){
            int i=0;
            while(i< nums.length() && nums.charAt(i)=='0') i++;
            return nums.substring(i);
        }


    public static void main(String[] args) {

            int result = compareVersion("1.0.1","1");
            System.out.println(result);
    }
}

 

posted on 2021-06-30 10:32  cStream  阅读(34)  评论(0)    收藏  举报