力扣 165. 比较版本号

该博客介绍了一个LeetCode问题,题目是对比两个版本号的大小。通过将版本号字符串按点分割成数组,然后逐级比较每个版本号部分的整数值来实现比较。如果在某一级发现两个版本号不同,就直接返回比较结果,否则继续比较下一级,直到遍历完所有部分。最终,如果所有级别都相同,则返回0表示两个版本号相等。

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

题目来源:https://leetcode-cn.com/problems/compare-version-numbers/

大致题意:
给定两个字符串,字符串是 形似 2.56.065.6 的版本号,比较两个版本号的大小。
规则:从左至右依次比较每级版本的大小

思路

字符串分割
  1. 将两个字符串按照字符 “.” 分割成字符串数组。注意,需要给该字符加上转义字符才可以正确识别,即 “\.”
  2. 按照最长的字符串数组长度为边界,依次遍历两个字符串数组
  3. 为了防止某个字符串数组长度不够(如 1.0.0 和 1.0.0.0.0.0.0 相比),初始时设当前代比较的版本号都为 0
  4. 若当前遍历索引小于字符串数组长度,便按照当前数组索引位的重新赋值
  5. 若当前级两个版本号不同,则对比返回结果

代码:

public int compareVersion(String version1, String version2) {
        // 分割版本
        String[] str1 = version1.split("\\.");
        String[] str2 = version2.split("\\.");
        for (int i = 0; i < Math.max(str1.length,str2.length); i++) {
            // 先设置初始值,防止某一个版本号长度不够
            int num1 = 0;
            int num2 = 0;
            // 若当前长度未越界,按实际值更新
            if (i < str1.length) {
                num1 = Integer.valueOf(str1[i]);
            }
            // 若当前长度未越界,按实际值更新
            if (i < str2.length) {
                num2 = Integer.valueOf(str2[i]);
            }
            // 版本不同,直接返回对比结果
            if (num1 != num2) {
                return num1 > num2 ? 1 : -1;
            }
        }
        return 0;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三更鬼

谢谢老板!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值