LeetCode - 165. Compare Version Numbers

本文介绍了一种用于比较软件版本号大小的方法。通过将版本号字符串拆分成数组,并逐一比较每部分的数值,来确定版本号的先后顺序。文章还特别说明了如何处理不同长度版本号的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

比较两个版本号的大小,首先自然是把两个String以"."分离开来,然后对它们一个一个进行比较。注意当其中的一个版本号长度比较小的时候,就在比较中将它设置为0,整体的代码如下:

public class Solution {
    public int compareVersion(String version1, String version2) {
        String[] version1s = version1.split("\\.");
        String[] version2s = version2.split("\\.");
        
        int length = Math.max(version1s.length, version2s.length);
        for(int i = 0; i < length; i++){
            Integer v1 = i < version1s.length ? Integer.parseInt(version1s[i]) : 0;
            Integer v2 = i < version2s.length ? Integer.parseInt(version2s[i]) : 0;
            int compare = v1.compareTo(v2);
            if(compare != 0) return compare;
        }
        
        return 0;
    }
}

注意int值不能进行i.compareTo(j),只有将它转化为Integer类之后才可以进行compareTo()的操作;另外注意在分割String的时候,我们使用了split("\\."),其中第一个\表示转义,表明第二个\指的是\而不是其他的意思,这时第二个\指的就是转义的意思,所以.就是指的.而不是其他的意思。总的来说对于.和|的分割,都要写成split("\\|")。

知识点:

1. primitive type的compareTo()的用法,都要先将其升格为对应的类

2. split("\\."); split("\\.")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值