比较两个版本号大小(工具类)

华为OD机试C卷-- 比较两个版本号的大小(Java & JS & Python) 输入两个版本号 version1 和 version2,每个版本号由多个子版本号组成。 子版本号之间由 “.” 隔开,由大小写字母、数字组成,并且至少有一个字符。 按从左到右的顺序比较子版本号,比较规则如下: - 子版本号前面的0不参与比较,比如 001 和 1 是相等的。 - 小写字母 > 大写字母 > 数字 - 空字符和0相等,比如 1 和 1.0 相等 比较结果 如果 version1 > version2 ,返回 1 如果 version1 < version2 ,返回-1 其他情况返 阅读详情
/**
     * 版本号比较
     *
     * @param v1
     * @param v2
     * @return 0代表相等,1代表左边大,-1代表右边大
     * Utils.compareVersion("1.0.358_20180820090554","1.0.358_20180820090553")=1
     */
    public static int compareVersion(String v1, String v2) {
        if (v1.equals(v2)) {
            return 0;
        }
        String[] version1Array = v1.split("[._]");
        String[] version2Array = v2.split("[._]");
        int index = 0;
        int minLen = Math.min(version1Array.length, version2Array.length);
        long diff = 0;
        
        while (index < minLen
                && (diff = Long.parseLong(version1Array[index])
                - Long.parseLong(version2Array[index])) == 0) {
            index++;
        }
        if (diff == 0) {
            for (int i = index; i < version1Array.length; i++) {
                if (Long.parseLong(version1Array[i]) > 0) {
                    return 1;
                }
            }
            
            for (int i = index; i < version2Array.length; i++) {
                if (Long.parseLong(version2Array[i]) > 0) {
                    return -1;
                }
            }
            return 0;
        } else {
            return diff > 0 ? 1 : -1;
        }
    }
举例:

Utils.compareVersion("1.0.358_20180820090554","1.0.358_20180820090553")=1

Utils.compareVersion("1.0.360","1.0.358_20180820090553")=1

Utils.compareVersion("1.0.358.2","1.0.358_20180820090553")=-1

Utils.compareVersion("1.0.0.2","1.0.1")=-1
版本比对工具 这是一款很好的版本比较工具,可以哼好的处理代码或文档中不一致的地方,并且标注出来!方便你的修改和查看代码! 立即下载

相关推荐

比较版本号算法

比较版本号算法,适用于大多数版本号比较。比较实用的一个工具类

Java实现比较APP版本号大小

实现代码如下: /** * 比较APP版本号的大小 * &lt;p&gt; * 1、前者大则返回一个正数 * 2、后者大返回一个负数 * 3、相等则返回0 * * @param version1 app版本号 * @param version2 app版本号 * @return int */ ...

道阻且长,行则将至 1万+

STM32H7 Flash擦除后数据读取异常的缓存问题解析

本文深入分析了STM32H7系列芯片在Flash擦除后数据读取异常的缓存问题,揭示了由于数据缓存(D-Cache)和指令缓存(I-Cache)导致的数据一致性问题。通过详细的解决方案,包括手动维护缓存一致性和操作期间禁用缓存,帮助开发者有效解决这一常见但棘手的嵌入式开发难题。

weixin_29158413的博客 392

java版本号分段比较_Java 比较两个版本号的大小 (通用)

/*** 版本号比较** @param v1* @param v2* @return 0代表相等,1代表左边大,-1代表右边大* Utils.compareVersion("1.0.358_20180820090554","1.0.358_20180820090553")=1*/public static int compareVersion(String v1, String v2) {if (...

weixin_39951018的博客 396

ROS2多线程处理RTSP视频流避坑指南:OpenCV解码丢帧问题解决方案

本文针对ROS2中处理RTSP视频流时OpenCV解码丢帧的常见问题,提供了专业的解决方案。通过深入分析单线程模型的瓶颈,提出并详细拆解了基于生产者-消费者多线程模型的健壮实现方案,有效分离数据采集与处理,从而显著提升视频流的稳定性和流畅度。

weixin_29199873的博客 168

保姆级教程:用Python+OpenCV搞定Orbbec Gemini深度与彩色流对齐(附完整代码)

本文提供了一份详细的Orbbec Gemini深度与彩色流对齐教程,涵盖从环境配置到完整代码实现的每一步。通过解析深度流对齐原理,对比不同对齐模式,并提供工业级应用中的问题排查方法,帮助开发者快速掌握Orbbec Gemini相机的使用技巧。文章还包含进阶应用如点云生成与三维重建的实战代码。

weixin_29090917的博客 470

Hutool工具类和工具方法

基础工具类: StrUtil/StringUtils -字符串工具类 添加移除:addXXX/appendXXX/removeXXX 判断:containsXXX/startWithXXX/endWithXXX/indexOfXXX/lastIndexOfXXX/ordinalIndexOf/ isAllCharMatchisBlankIfStr/isBlankOrUndefined/isNullOrUndefined/hasBlank/hasEmpty/ isEmpty/isNotE

青春不散场的专栏 4323

【算法实战】Keystone变换:从原理到MATLAB实现的距离走动校正

本文深入解析Keystone变换在雷达信号处理中的距离走动校正应用,从原理到MATLAB实现全面讲解。通过三种实现方法(DFT+IFFT、Sinc插值、Chirp-Z变换)的对比分析,结合实战案例展示如何有效解决高速目标导致的距离单元跨越问题,提升多普勒频谱聚焦质量。

weixin_29055699的博客 294

有哪些比较版本差异的工具呀

这些工具可以帮助我们识别不同版本之间的变化和差异,并提供有关这些差异的详细信息,以便进行比较、合并或评估。根据自己的具体需求和所处理的内容类型,选择适合的工具将有助于管理和理解版本之间的差异。

weixin_44542369的博客 1454

告别Colmap!在ROS2 Humble上,用Fast-LIVO2直接为3D Gaussian Splatting准备数据全流程

本文详细介绍了在ROS2 Humble环境下,使用Fast-LIVO2为3D Gaussian Splatting(3DGS)准备数据的全流程。通过优化Fast-LIVO2配置、实时数据同步机制和3DGS训练参数,显著提升了三维重建效率和质量,相比传统Colmap流程节省95%以上的预处理时间。适用于Ubuntu22.04系统,适合机器人及自动驾驶领域的三维重建应用。

weixin_28688385的博客 588

Dify 第 2 篇 Dify 插件离线安装

Dify是一个支持插件扩展的AI平台,其插件市场提供5种类型插件(模型、工具、Agent策略、扩展、插件包)。由于默认pip安装速度慢,可通过dify-plugin-repackaging工具将插件转换为离线包(使用阿里云镜像加速)。该工具提供两种方式:1)自备Python环境执行脚本;2)使用Docker环境(推荐)。脚本支持从Dify市场或GitHub下载插件,并重新打包为含依赖的离线包,便于通过"本地插件"方式快速安装。

甘蓝的专栏 1264

探秘compare-versions:一个强大的版本号比较工具

探秘compare-versions:一个强大的版本号比较工具 当你在处理软件版本管理时,是否曾因为复杂的版本号比较而困扰?现在,有一个叫做compare-versions的开源项目可以帮助你解决这个问题。这个轻量级库不仅完全符合语义化版本(SemVer)标准,还支持多种版本格式和范围操作。 项目介绍 compare-versions是一个JavaScript库,专为在浏览器和Node.js环境中...

gitblog_00038的博客 991

复现:Mamba-UNet:降水临近预报的创新解决方案

Mamba-UNet通过其创新的双分支Mamba融合模块、多尺度时空注意力模块和动态分位数加权损失函数,在降水临近预报领域取得了显著的性能提升。它不仅在多种降水场景下表现出色,尤其在预测强降水事件方面展现出了强大的能力。这一创新模型为降水临近预报提供了一种新的解决方案,有望在未来的研究和应用中发挥更大的作用,为应对气候变化带来的挑战提供有力支持。随着技术的不断发展和优化,我们期待Mamba-UNet在更广泛的气象预报任务中发挥更大的价值,为各行各业提供更精准、更可靠的降水预报服务。

hanfeng5268的博客 914

android版本号的比较

版本号的比较(用于升级判断): 比如: 1.1 与 1.2 1.1.1 与 1.1.2 1.1 与 1.1.2 工具类 public class VersionUtil { /** * 版本号比较 * * @param version1 * @param version2 * @return */ ......

火星男孩的分享空间 1283

代数拓扑与AI架构:AI应用架构师深入探索数学研究如何分析复杂系统的结构特性

随着人工智能技术的飞速发展,AI系统变得越来越复杂。AI应用架构师需要有效的工具和方法来理解、设计和优化这些复杂系统。代数拓扑作为数学的一个分支,提供了独特的视角和技术来分析复杂系统的结构特性。本文旨在帮助AI应用架构师深入了解代数拓扑,以及如何将其应用于AI架构设计中,提升对复杂系统的分析能力。首先,我们会介绍代数拓扑和AI架构相关的核心概念及其联系,通过有趣的故事引入主题,让读者轻松理解复杂概念。接着,深入探讨代数拓扑的核心算法原理,结合具体的编程语言代码示例详细阐述。

大模型应用工坊 670

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

版本比较工具类(通用)

在java后台开发中,经常会遇到某一个版本以后才要上新特性,此时就可以将版本比较工具类派上用场了。 public class VersionCompare { /** * 判断版本1是否在版本2之后 * @param version1 * @param version2 * @return */ public static boolean afterVersion(S

飞血泪无痕的博客 1027

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

版本号工具类

【代码】版本号工具类。

weixin_42712731的博客 526

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

java中版本号比较大小

* compareTo 一定不要用 例如在比较10.0.1 和 9.8.3是就会显示后面的数大; 下面这个工具类可以比较大小 package com.icbc.tgmgmt.app; /** * * version1 目标版本 * version2 源版本 * modify by user on 2018-5-21 */ public class C...

weixin_30815427的博客 1099

Android version版本号对比

新旧版本号对比

3161

java实现版本比较

package com.hzxc.chess.server.util; /** * Created by hdwang on 2018/3/19. * 版本比较工具类 */ public class VersionCompareUtil { /** * 比较版本大小 * * 说明:支n位基础版本号+1位子版本号 ...

weixin_30709061的博客 357

版本号比较-工具类

/** * @author zhangbo */ public class VersionUtil { /** * 比较APP版本号的大小 * <p> * 1、前者大则返回一个正数 * 2、后者大返回一个负数 * 3、相等则返回0 * * @param version1 app版本号 * @param version2 app版本号 * @return int */ publ.

不吃_花椒的博客 878

版本号比较工具类

/** * 比较版本号的大小 (两个版本号格式应尽量相同) * * @param v1 版本号1 * @param v2 版本号2 * @return 正数:v1大 负数:v2大 0:相等 */ public static int checkVersion(String v1, String v2) { String[] verArr1 = v1.split("\\."); String[] verArr2 = v2.split("\\."); int idx =.

qq_36069670的博客 346

Swift3 获取版本号,比较版本大小

Swift获取应用版本号:version 1、获取本地版本号 /// 获取本地版本号 func getLocalVersion() -> String { var localVersion:String = "" //当前版本 if let v:String = Bundle.main.object(forInfoDictionaryKey: "CF...

weixin_30491641的博客 274

python 比较两个版本号大小

比较两个版本号ver1和ver2的大小 1、首先将两个版本号处理成纯数字的版本号,如5.2.1.3.20 2、将版本号按“.”切割为列表,从索引0开始依次比较列表的大小 3、对比两个列表的len,len较短的作为循环次数,防止列表索引越界 4、如果循环结束后仍没有对比出结果,则对比列表len,len值大的为高版本 def compared_version(ver1, ver2):...

tinyjm的博客 6417

Java 比较两个版本号的大小 (通用)

/** * 版本号比较 * * @param v1 * @param v2 * @return 0代表相等,1代表左边大,-1代表右边大 * Utils.compareVersion("1.0.358_20180820090554","1.0.358_20180820090553")=1 */ public s...

Admans的专栏 2万+

比较两个版本号的大小

步骤: 1.通过"."进行分割字符串 2.先看两个字符串的前半部分是否相等 3.如果相等,那么有三种情况:字符串1长于2,2长于1,1等于2 如果是长于的情况,比如1.2.0是等于1.2的,所以对于长于的部分要看是否大于0 其他的长于情况,比如1.2.1&gt;1.2 4.如果不相等 字符串二者相减:diff&gt;0?1:-1 注意: 1.使用public static int ...

nature_ph的博客 5277
上一篇: IDEA 程序包不存在,找不到符号但是明明存在对应的jar包 的解决方案
下一篇: 字符串(昵称)过滤特殊符号和表情(通用)
微微一笑满城空
博客等级 码龄10年 6372粉丝 114原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

微微一笑满城空

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值