豆包ai程序5

74 阅读1分钟

问题描述

在某个项目中,每个版本都用版本号标记,由一个或多个修订号组成,修订号之间由点号.分隔。每个修订号可能有多位数字,并且可能会包含前导零。你需要根据两个版本号 version1 和 version2,判断哪个版本更新,或者它们是否相同。

例如,2.5.33 和 0.1 都是有效的版本号。

当比较两个版本时,从左到右依次比较它们的修订号。忽略每个修订号的前导零,直接比较修订号对应的整数值。如果其中一个版本没有足够的修订号,缺失部分默认补为0

你需要根据以下规则返回比较结果:

  • 如果 version1 > version2,返回 1

  • 如果 version1 < version2,返回 -1

  • 如果两个版本相等,返回 0。 程序 public class Main { public static void main(String[] args) { System.out.println(solution("0.2.1", "0.1.1")); System.out.println(solution("1.0.1", "1") == 1); System.out.println(solution("7.5.2.4", "7.5.3") == -1); System.out.println(solution("1.0", "1.0.0") == 0); }

    public static int solution(String version1, String version2) { String[] v1 = version1.split("\.", -1); String[] v2 = version2.split("\.", -1); int maxLength = Math.max(v1.length, v2.length);

    for (int i = 0; i < maxLength; ++i) {
        int x = (i < v1.length) ? Integer.parseInt(v1[i]) : 0;
        int y = (i < v2.length) ? Integer.parseInt(v2[i]) : 0;
        
        if (x > y) {
            return 1;
        }
        if (x < y) {
            return -1;
        }
    }
    return 0;
    

    } }