0
点赞
收藏
分享

微信扫一扫

面试必刷TOP101:22、比较版本号

题目

面试必刷TOP101:22、比较版本号_i++

题解

public int compare (String version1, String version2) {
        // 用双指针遍历两个字符串
        //截取.之前的数字,  
        //比较数字大小,返回1、-1;如果全部比较完都没有结果,返回0
        //关键在于处理前导0:加在前面数字乘10的后面   010-->10   00010-->10
        int i=0;
        int j=0;
        while(i<version1.length()||j<version2.length()){
            long num1=0;
            long num2=0;
            //处理version1
            while(i<version1.length()&&version1.charAt(i)!='.'){//按.截取数字
                int tmp1=version1.charAt(i)-'0';
                num1=num1*10+tmp1;
                i++;
            }
            i++;//跳过.

            //处理version2
            while(j<version2.length()&&version2.charAt(j)!='.'){
                int tmp2=version2.charAt(j)-'0';
                num2=num2*10+tmp2;
                j++;
            }
            j++;//跳过.
            //比较数字
            if(num1>num2) return 1;
            if(num1<num2) return -1;
        }
        return 0;
    }

举报

相关推荐

0 条评论