题解 | #比较版本号#

比较版本号

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);
    }


}

全部评论

相关推荐

三年之期已到我的offer快到碗里来:9硕都比不上9本
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务