当前位置: 首页 > article >正文

算法-字符串-165.比较版本号

一、题目

二、思路解析

        1.思路:

                比较的是两个版本号它们以“.”作为分割的部分的有效值(即数值)是否一致

        2.常用方法:

                1.s.split("\\规则"),将字符串按参数规则进行分割并存储在字符串数组中

String[] str = s.split("\\."); //按“.”进行分割得到对应的几段子字符串,并依次存入str数组中

                2.Integer.parseInt(参数),将参数的类型转换为int类型

int num=Integer.parseInt(str[i]);

        3.核心逻辑:

                1.将两个版本号分别根据自己的“.”进行分割转为string数组

String[]str1=version1.split("\\.");
String[]str2=version2.split("\\.");

                2.获取两个版本号对应数组中最大的长度,因为要比对二者版本是否一致,需要比对所有数值

int maxLen=Math.max(str1.length,str2.length);

                3.遍历,获取到对应数组下标的元素,进行比对

                        √.注意事项:

                                当前下标大于数组的长度时, 此时补0

for(int i=0;i<maxLen;i++){
    int num1=i<size1?Integer.parseInt(str1[i]):0;
    int num2=i<size2?Integer.parseInt(str2[i]):0;

    if(num1!=num2){
        return num1<num2?-1:1;
}
}
        return 0;

三、代码实现

class Solution {
    public int compareVersion(String version1, String version2) {
        String[]str1=version1.split("\\.");
        String[]str2=version2.split("\\.");
        int maxLen=Math.max(str1.length,str2.length);

        for(int i=0;i<maxLen;i++){
            int num1=i<str1.length?Integer.parseInt(str1[i]):0;
            int num2=i<str2.length?Integer.parseInt(str2[i]):0;

            if(num1!=num2){
                return num1<num2?-1:1;
            }
        }
        return 0;
    }


http://www.kler.cn/a/430334.html

相关文章:

  • Flutter:封装一个自用的bottom_picker选择器
  • spring boot 集成 knife4j
  • 基于视觉惯性 SLAM(VSLAM)、相机和 IMU 数据的融合执行 6 自由度位姿跟踪
  • STM32Flash读写BUG,坑—————4字对齐
  • 【VUE+ElementUI】通过接口下载blob流文件设置全局Loading加载进度
  • CS·GO搬砖流程详细版
  • 【UBOOT】【run_main_loop】uboot 启动 linux 内核
  • 使用javascript+canvas显示二叉树
  • DedeCMS最新注入漏洞(CNVD-2024-44514、CVE-2024-9076)
  • 怎么为开源项目做贡献提PR?
  • 企业经营数据分析系统:提升决策能力的利器
  • git中配置ssh的方法
  • 【计算机网络】实验15:VLAN间通信的实现方法“单臂路由”
  • 分布式事物各方案常见使用场景
  • PHP和GD库如何在图片上添加文字
  • 【IT】测试用例模版(含示例)
  • 踩坑日记-@Data注释的使用
  • 【机器学习】机器学习的基本概念、算法的工作原理、实际应用案例
  • 文生图模型开源之光!ComfyUI - AuraFlow本地部署教程
  • 如何拦截伪蜘蛛、假蜘蛛
  • 【漫话机器学习系列】002.拟合度:调整R方(Adjusted R-Squared)
  • 迅为RK3576开发板满足了4G/5G、wifi6、多网口、NPU等扩展需求
  • vue入门实战(二)父子组件显示,参数传递
  • minio参考官方文档实现多节点部署,基于ubuntu,还是失败了。。。。
  • 香港科技大学广州|智能交通学域博士招生宣讲会—同济大学专场
  • Cesium 问题: 添加billboard后移动或缩放地球,标记点位置会左右偏移