题解 | #比较版本号#

比较版本号

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
        if (version1 == null && version2 == null) {
            return 0;
        }
        if (version1 == null) {
            return -1;
        }
        if (version2 == null) {
            return 1;
        }
        String[] parts1 = version1.split("\\.");
        String[] parts2 = version2.split("\\.");
        int len1 = parts1.length;
        int len2 = parts2.length;
        int maxLen = Math.max(len1, len2);
        for (int i = 0; i < maxLen; i++) {
            String str1 = i < len1 ? parts1[i] : "0";
            String str2 = i < len2 ? parts2[i] : "0";
            int res = helper(str1, str2);
            if (res != 0) {
                return res;
            }
        }
        return 0;
    }

    private int helper(String str1, String str2) {
        str1 = trimPrefixZero(str1);
        str2 = trimPrefixZero(str2);
        if (str1.equals(str2)) {
            return 0;
        }
        if (Integer.parseInt(str1) > Integer.parseInt(str2)) {
            return 1;
        }
        return -1;
    }

    private String trimPrefixZero(String str) {
        int i = 0;
        int n = str.length();
        while (i < n && str.charAt(i) == '0') {
            i++;
        } 
        if (i == n) {
            return "0";
        }
        return str.substring(i);
    }


}

全部评论

相关推荐

06-18 15:03
重庆大学 运营
运营你豪哥:做一下被打的数据,分析输出优化建议
点赞 评论 收藏
分享
好在哪里了?我请问了?
_hengheng:很好啊,我看旁边同事都入职了都有工作
点赞 评论 收藏
分享
05-12 17:00
门头沟学院 Java
king122:你的项目描述至少要分点呀,要实习的话,你的描述可以使用什么技术,实现了什么难点,达成了哪些数字指标,这个数字指标尽量是真实的,这样面试应该会多很多,就这样自己包装一下,包装不好可以找我,我有几个大厂最近做过的实习项目也可以包装一下
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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