java比较版本号大小

华为OD机试 - 比较两个版本号的大小(Java) 需要注意的是,如果子版本就是0或者由多个0组成,则按上面替换逻辑,会得到一个空串子版本,为了避免这种情况,在替换后,我们需要判断子版本是否为空串,如果为空串,则给一个'0'。首先把版本号的每个子版本的前导0去掉,这里我用的是正则表达式 /^0+/ 去匹配前导0,并替换为''。去掉每个子版本的前导0后,我们需要求出两个版本号的子版本个数,将最多的个数赋值给len。很明显的,10版本要比6版本大,但是由于采用字典序比较,因此10会比6小。注意,如果某个版本号不存在对应序号子版本,则默认取0作为子版本。 阅读详情

version1>version2 返回1

version1=version2 返回0

version1<version2返回-1


public class Version {
	public static void main(String[] args) {
		int i=Version.compareVersion("10.1.0", "9.5.0");
		System.out.println(i);
		int a=Version.compareVersion("8.1.0", "9.5.0");
		System.out.println(a);
		int b=Version.compareVersion("9.5.0", "9.5.0");
		System.out.println(b);
	}
	 public static int compareVersion(String version1, String version2) {
	        if (version1.equals(version2)) {
	            return 0;
	        }
	        String[] version1Array = version1.split("\\.");
	        String[] version2Array = version2.split("\\.");
	        int index = 0;
	        //获取最小长度值
	        int minLen = Math.min(version1Array.length, version2Array.length);
	        int diff = 0;
	        //循环判断每位的大小
	        while (index < minLen && (diff = Integer.parseInt(version1Array[index]) - Integer.parseInt(version2Array[index])) == 0) {
	            index++;
	        }
	        if (diff == 0) {
	            //如果位数不一致,比较多余位数
	            for (int i = index; i < version1Array.length; i++) {
	                if (Integer.parseInt(version1Array[i]) > 0) {
	                    return 1;
	                }
	            }

	            for (int i = index; i < version2Array.length; i++) {
	                if (Integer.parseInt(version2Array[i]) > 0) {
	                    return -1;
	                }
	            }
	            return 0;
	        } else {
	            return diff > 0 ? 1 : -1;
	        }
	    }

}

返回结果如下:

 

 

华为OD机试 - 比较两个版本号的大小( C++ Java JavaScript python) 输入两个版本号 version1 和 version2,每个版本号由多个子版本号组成。子版本号之间由 “.” 隔开,由大小写字母、数字组成,并且至少有一个字符。如果 version1 > version2 ,返回 1。如果 version1 < version2 ,返回-1。输出version1和version2的比较结果。第一行输入version1。第二行输入version2。 阅读详情

相关推荐

华为OD机试C卷-- 比较两个版本号的大小(Java & JS & Python)

输入两个版本号 version1 和 version2,每个版本号由多个子版本号组成。 子版本号之间由 “.” 隔开,由大小写字母、数字组成,并且至少有一个字符。 按从左到右的顺序比较子版本号,比较规则如下: - 子版本号前面的0不参与比较,比如 001 和 1 是相等的。 - 小写字母 > 大写字母 > 数字 - 空字符和0相等,比如 1 和 1.0 相等 比较结果 如果 version1 > version2 ,返回 1 如果 version1 < version2 ,返回-1 其他情况返

wbajsjhhhhh的博客 3624

版本号比较

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

sinat_38281141的博客 535

华为OD机试 - 比较两个版本号的大小(Java )

需要注意的是,如果子版本就是0或者由多个0组成,则按上面替换逻辑,会得到一个空串子版本,为了避免这种情况,在替换后,我们需要判断子版本是否为空串,如果为空串,则给一个'0'。首先把版本号的每个子版本的前导0去掉,这里我用的是正则表达式 /^0+/ 去匹配前导0,并替换为''。去掉每个子版本的前导0后,我们需要求出两个版本号的子版本个数,将最多的个数赋值给len。输入两个版本号 version1 和 version2,每个版本号由多个子版本号组成。然后for循环遍历两个版本号0~len-1序号的子版本,

u012657708的博客 159

Java 版本号比较大小(思路通用)

【代码】Java 版本号比较大小3.3.5,3.3.6!!!

Mistofinsult 3114

【免费题库】华为OD机试C卷 - 比较两个版本号的大小(Java 代码+解析)

题目描述 输入两个版本号 version1 和 version2,每个版本号由多个子版本号组成。 子版本号之间由 “.” 隔开,由大小写字母、数字组成,并且至少有一个字符。 按从左到右的顺序比较子版本号,比较规则如下: 子版本号前面的0不参与比较,比如 001 和 1 是相等的。 小写字母 > 大写字母 > 数字 空字符和0相等,比如 1 和 1.0 相等 比较结果 如果 version1 > version2 ,返回 1 如果 version1 < version2 ,返回-1 其他情况返回0

m0_66793065的博客 3365

Java实现比较版本号

涉及到客户端的系统中经常需要用到比较版本号的功能,但是比较版本号又不能完全按照字符串比较的方式去用compareTo之类的方法;   这需要我们总结版本号的通用规则,设计一个比较算法并封装成通用方法来使用:   通常版本号如:1.3.20.8,6.82.20160101,8.5a/8.5c等;   通用规则是,先将版本字符串按照点号分割,然后主版本与主版本比较、此版本与此版本比较,如此按序一级一级往后比较,直到有分出大小;   值得注意的是,很多比较版本号的方法都先将字符串转换成int或者double类型,这样做未必通用,因为可能含有字母,如8.5c这样的版本号;   通用的方式依然

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

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

Admans的专栏 2万+

C# 进阶:打造WinForms中的动态交互式UserControl

本文深入探讨了如何在C# WinForms中创建动态交互式UserControl,以提升桌面应用的用户体验和代码复用性。通过剖析UserControl生命周期、事件体系,并结合一个可拖拽缩放的分割面板实战案例,详细讲解了鼠标键盘事件处理、自定义绘制、状态管理以及性能优化等核心技巧,帮助开发者封装复杂交互逻辑,打造专业级自定义控件。

weixin_29279153的博客 462

java判断版本号大小,比较版本号大小

代码:java判断版本号大小。

weixin_45559862的博客 6361

手把手教你用Vivado的STARTUPE3原语驱动S25FL256S Flash(附完整Verilog代码)

本文详细介绍了如何利用Xilinx UltraScale+系列FPGA的STARTUPE3原语驱动S25FL256S SPI Flash,包括原语配置、SPI协议实现、状态机设计及调试技巧。通过完整的Verilog代码示例和性能优化建议,帮助开发者高效完成Flash通信解决方案的开发与集成。

weixin_30660027的博客 460

pytorch-cifar100学习资料汇总 - 基于PyTorch的CIFAR-100图像分类实践

pytorch-cifar100是一个基于PyTorch实现CIFAR-100数据集图像分类的开源项目。该项目实现了多种经典的深度学习网络模型,如ResNet、DenseNet、VGG等,为开发者提供了在CIFAR-100数据集上进行图像分类实验的代码范例。pytorch-cifar100项目为我们提供了在CIFAR-100数据集上进行图像分类实验的完整代码实现。无论你是想要学习PyTorch的使用,还是研究不同网络模型在CIFAR-100上的表现,这个项目都是一个很好的起点。

helloaiworld的博客 1123

Java - 版本号大小比较

原文链接:https://blog.youkuaiyun.com/admans/article/details/81865652。* @return 0代表相等,1代表左边大,-1代表右边大。

浅月流苏 1305

ISCC-Amy‘s Code CTF-Reverse

ISCC-Amy's Code CTF-Reverse

m0_72904009的博客 682

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

树莓派4B学习笔记一

树莓派4b烧录Ubuntu20.04&&配置Ubuntu桌面

m0_55202222的博客 3640

AI大模型入门到实战系列(二十一)命名实体识别(NER)

命名实体识别(NER)是自然语言处理中的关键任务,旨在从文本中识别并分类预定义类别的实体(如人名、地点、组织等)。其核心步骤包括文本预处理、实体边界检测和类型分类。主流技术方法经历了从基于规则、统计机器学习到深度学习的演进,当前主要采用预训练语言模型(如BERT)和序列标注技术(如BiLSTM-CRF)。关键技术挑战包括实体边界模糊、嵌套实体和领域适应等问题。NER广泛应用于信息抽取、搜索引擎优化和知识图谱构建等领域,常用精确率、召回率和F1值作为评估指标。实际应用中通常采用BIO标注体系,并通过标签对齐处

echo的博客 1624

Java实现比较APP版本号大小

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

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

3、提升管壳式换热器能效:双螺旋盘管的应用研究

本研究探讨了在管壳式热交换器中应用双螺旋盘管以提升能效的可行性。通过实验对比双螺旋与单螺旋盘管的热传递效率,结果显示双螺旋盘管达到54.33%的效率,显著优于单螺旋的48.88%。双螺旋结构不仅增大了换热面积,还因产生剪切应力而减少结垢,延长运行周期。采用NTU方法评估热传递性能,验证了该设计在工业应用中的高效性与实用性,建议在制冷、空调、石油精炼等领域推广使用。

k8s6orchestrator的博客 107

java版本号分段比较_java比较版本号大小

if (version1 == null || version2 == null) {throw new Exception("compareVersion error:illegal params.");}String[] versionArray1 = version1.split("\\.");//注意此处为正则匹配,不能用".";for(int i = 0 ; iif(versionArr...

weixin_39926311的博客 212

HQChart实战教程49-点击修改K线颜色及背景色

HQChart实战教程49-点击修改K线颜色及背景色需求效果图步骤1. 注册点击监听事件2. 修改K颜色添加一个自定义颜色的K线klineoption清空所有自定义颜色的K线option交流QQ群: 950092318HQChart代码地址完整例子 需求 对点击的K线修改颜色。 效果图 步骤 1. 注册点击监听事件 事件ID JSCHART_EVENT_ID.ON_CLICK_CHART_PAINT, 注册监听事件见教程 HQChart使用教程5- K线图控件操作函数说明 this.Create=func

小银 2911

android 蓝牙通讯demo

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

java多个小数点版本号比较大小

public static void main(String[] args) { String str1 = "10.110.301.0001"; String str2 = "10.110.302"; System.out.println(versionCompare(str1, str2)); } public static int versionCompare(Stri...

kanaiji123的博客 1158

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

java自定义Compare方法实现两个版本号大小的比较

引用自https://blog.youkuaiyun.com/Mask_V/article/details/81282738,在此代码基础上进行了bug的修改和完善。 /** * Created by SunTing on 2018/8/12. * 比较版本大小 */ public class CompareTest { public static void main(String[] ar...

weixin_42019586的博客 4518

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

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_35214794的博客 864

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
上一篇: oracle lag、lead函数
下一篇: Could not read JSON: Unexpected character (‘¬‘ (code 172)): expected a valid value (number, String
心寒丶
心寒丶 优质创作者: 编程框架技术领域 优质创作者: 编程框架技术领域 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄10年 1万+粉丝 288原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

心寒丶

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

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

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

打赏作者

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

抵扣说明:

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

余额充值