NC104 题解 | #比较版本号#

比较版本号

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

官方解法:双指针

import java.util.*;
public class Solution {
    public int compare (String version1, String version2) {
        // 两个版本号的长度
        int n1 = version1.length();
        int n2 = version2.length();
        // 双指针
        int i = 0, j = 0;       
        
        while (i < n1 || j < n2) { //直到某个字符串结束
            long num1 = 0;
            //从下一个点前截取数字,每次比较ver1和ver2每个段的值的大小
            while (i < n1 && version1.charAt(i) != '.') {
                // 因为每次只比较一个段(也就是点之前),所以这样处理可以解决前导0的问题,因为前导0*10还是等于0
                num1 = num1 * 10 + (version1.charAt(i) - '0');
                i++;
            }
            //跳过点
            i++;
            long num2 = 0;
            //从下一个点前截取数字
            while (j < n2 && version2.charAt(j) != '.') {
                num2 = num2 * 10 + (version2.charAt(j) - '0');
                j++;
            }
            //跳过点
            j++;
            //比较数字大小
            if (num1 > num2)
                return 1;
            if (num1 < num2)
                return -1;
        }
        //版本号相同
        return 0;
    }
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-18 18:23
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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