题解 | 比较版本号

比较版本号

https://www.nowcoder.com/practice/2b317e02f14247a49ffdbdba315459e7

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 比较版本号
     * @param version1 string字符串
     * @param version2 string字符串
     * @return int整型
     */
    public int compare (String version1, String version2) {
        // write code here
        //看懂了----双指针进行比较
        int len1 = version1.length();
        int len2 = version2.length();
        int i = 0, j = 0;

        while(i < len1 || j < len2){//直到某个字符串遍历结束
            long num1 = 0;
            //从下一个点前截取数字
            while(i < len1 && version1.charAt(i) != '.'){
                num1 = num1 * 10 + (version1.charAt(i) - '0');//备注:两个字符相减结果是其ASCII码的差值
                //这里就排除了‘0’
                i ++;
            }
            i ++;//跳过一个点

            long num2 = 0;
            //从下一个点前截取数字
            while(j < len2 && version2.charAt(j) != '.'){
                num2 = num2 * 10 + (version2.charAt(j) - '0');//备注:两个字符相减结果是其ASCII码的差值
                //这里就排除了‘0’
                j ++;
            }
            j ++;//跳过一个点

            //然后比较两个数字的大小
            if(num1 > num2){
                return 1;
            }
            if(num1 < num2){
                return -1;
            }
        }
        //分析
        /**
        若是i < len1 && j < len2,则需要,否则while循环一直在继续,num1 = 0 或 num2 = 0了,结果也就很明显了
        所以上面是考虑到两个版本号长度不同的比较规则
         */
        return 0;
    }
}


全部评论

相关推荐

找工作勤劳小蜜蜂:矛盾是没有实习,就是没实战经验,公司不想要,公司不要,你就没有实习,你就进入死循环,另外你的项目不是社会现在有大量岗位存在行业用的,云存储人员早就饱和。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务