比较版本号:给你两个版本号 version1 和 version2 ,请你比较它们。
一、题目描述 165. 比较版本号
给你两个版本号 version1 和 version2 ,请你比较它们。
版本号由一个或多个修订号组成,各修订号由一个 '.' 连接。每个修订号由 多位数字 组成,可能包含 前导零 。每个版本号至少包含一个字符。修订号从左到右编号,下标从 0 开始,最左边的修订号下标为 0 ,下一个修订号下标为 1 ,以此类推。例如,2.5.33 和 0.1 都是有效的版本号。
比较版本号时,请按从左到右的顺序依次比较它们的修订号。比较修订号时,只需比较 忽略任何前导零后的整数值 。也就是说,修订号 1 和修订号 001 相等 。如果版本号没有指定某个下标处的修订号,则该修订号视为 0 。例如,版本 1.0 小于版本 1.1 ,因为它们下标为 0 的修订号相同,而下标为 1 的修订号分别为 0 和 1 ,0 < 1 。
返回规则如下:
如果 version1 > version2 返回 1,
如果 version1 < version2 返回 -1,
除此之外返回 0。
示例 1:
输入:version1 = "1.01", version2 = "1.001"
输出:0
解释:忽略前导零,"01" 和 "001" 都表示相同的整数 "1"
示例 2:
输入:version1 = "1.0", version2 = "1.0.0"
输出:0
解释:version1 没有指定下标为 2 的修订号,即视为 "0"
示例 3:
输入:version1 = "0.1", version2 = "1.1"
输出:-1
解释:version1 中下标为 0 的修订号是 "0",version2 中下标为 0 的修订号是 "1" 。0 < 1,所以 version1 < version2
示例 4:
输入:version1 = "1.0.1", version2 = "1"
输出:1
示例 5:
输入:version1 = "7.5.2.4", version2 = "7.5.3"
输出:-1
二、实现思路以及代码 (双指针法)
class Solution {
public int compareVersion(String version1, String version2) {
String[] spiltStr1 = version1.split("\\."); // [1 01]
int len1 = spiltStr1.length;
String[] spiltStr2 = version2.split("\\."); // [1 001]
int len2 = spiltStr2.length;
int len = len1 > len2 ? len2 : len1;
int i = 0, j = 0;
while (i < len) {// 比较相同长度的子串的大小
int nums1 = Integer.parseInt(spiltStr1[i]);
int nums2 = Integer.parseInt(spiltStr2[j]);
if (nums1 > nums2) {
return 1;
} else if (nums1 < nums2) {
return -1;
} else {//相同则后移
i++;
j++;
}
}
if (i < len1) {//说明verson2后面已经没有字符串
while (i < len1) {
int nums1 = Integer.parseInt(spiltStr1[i]);
if (nums1 > 0) {
return 1;
} else { // 此处只能是 =
if (i == len1 - 1) { //最后一位相同
return 0;
}
i++;
}
}
}
if (j < len2) {//说明verson1后面已经没有字符串
while (j < len2) {
int nums2 = Integer.parseInt(spiltStr2[j]);
if (nums2 > 0) {
return -1;
} else { // 此处只能是 =
if (j == len2 - 1) {// 最后一位相同
return 0;
}
j++;
}
}
}
return 0;//此处是版本的子串数相同,相同版本的情况
}
}
比较版本号:给你两个版本号 version1 和 version2 ,请你比较它们。相关推荐
- 比较版本号大小c语言,比较两个版本字符串version1和version2
8 # python中的列表可以直接比较,只要把输入的数字按照'.'分割后,换为整数列表即可. num = input().split() version1 = list(map(int, num[0 ...
- java对于app版本号比较,Java对比APP版本号大小
/** * 比较版本号的大小,前者大则返回一个正数,后者大返回一个负数,相等则返回0 * @param version1 * @param version2 */ public static int ...
- msbuild构建时用SVN修改版本号代替AssemblyVersion的Revision版本号
持续构建需要标识出每次构建的版本,而每次构建的时候人工去修改版本是不现实的.靠程序去添加版本号,有3种可选:1) 顺序流水号:2) 时间戳:3) SVN检出代码的修订版本号 1) 顺序流水号.需要每次 ...
- oracle客户端查看版本号,Oracle 版本查看及版本号说明
select * from v$version; 结果如下: BANNER 1 Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - ...
- linux 查oracle版本号,查看linux中oracle版本号的方法总结
在Linux系统下,我们通过以下的方法可以查看到Oracle的版本号.下面由学习啦小编整理了查看linux中oracle版本号的方法总结,希望对你有帮助. 查看linux中oracle版本号的方法总结 ...
- oracle19c的版本号_Oracle 版本查看及版本号说明
select * from v$version; 或select banner from sys.v_$version; 结果如下: BANNER 1 Oracle Database 10g Ente ...
- h5 app 获取手机系统版本号、当前app的版本号
获取手机系统版本,代码如下: mui.plusReady(function() { var version = plus.os.version; // 获取手机系统版本console.log('当前版 ...
- Java锤子剪刀布大家应该都会玩“锤子剪刀布”的游戏: 现给出两人的交锋记录,请统计双方的胜、平、负次数,并且给出双方分别出什么手势的胜算最大。
题目描述: 大家应该都会玩"锤子剪刀布"的游戏:现给出两人的交锋记录,请统计双方的胜.平.负次数,并且给出双方分别出什么手势的胜算最大. 输入描述: 输入第1行给出正整数N(< ...
- Java 比较两个版本号的大小 (通用)
/*** 版本号比较** @param v1* @param v2* @return 0代表相等,1代表左边大,-1代表右边大* Utils.compareVersion("1.0.358_ ...
最新文章
- 新做了一个项目,一个人做的,关于数据传输的项目(架构说明)
- 是什么在吞食我们的科研时间2019-11-24
- *.bmp序列保存为*.raw文件[matlb实现]
- cx oracle 配置,cx_Oracle的配置啊。。终于搞出来了
- pfa是什么意思_PFA的完整形式是什么?
- [golang]nil slice和empty slice的区别
- Java UDP和TCP的区别
- nginx 和 nodejs配置使用搭建网站
- 用js的document.write输出的广告无阻塞加载的方法(转)
- wifi不断重连报错:eSIR_MAC_CLASS3_FRAME_FROM_NON_ASSOC_STA_REASON解决
- Visual C#.Net 网络程序开发-Socket篇
- IMAX Enhanced:让沉浸式家庭影音娱乐体验不再抽象
- javascript基础常识问答(八)
- SwiftUI 绘制刻度时钟表盘(自定义组件教程含源码)
- 怎么用java做日历_怎么用java做日历?实例讲解
- Cortex-M3技术参考手册 2022年3月1日
- winForm c#导出Excel
- eplan实战设计pdf百度云_EPLAN实战设计
- 太阳能MPPT充电控制板
- 部落节点和跨群集搜索:Elasticsearch中联合搜索的未来