比较版本号:给你两个版本号 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_ ...
最新文章
- iOS UIVisualEffectView毛玻璃亮度不符合要求
- 小程序 setData 学问多
- JVM插桩之二:Java agent基础原理
- I2C总线之(三)---以C语言理解IIC
- 网线重新插拔后恢复正常_14日科技精选:路由器经常掉线,必须重新插拔网线才能上网。什么原因?...
- 随想录(网络编程中的一些问题)
- ABAQUS后处理常用功能
- oreo另一个意思_墓碑上的“故,显,考,妣”是什么意思?
- go语言 过滤 html,golang 去除html标签-Go语言中文社区
- 数组的趣味应用-文曲星猜数游戏
- 应用树莓派GPIO完成智能红绿灯系统
- 【SAP Abap】记录一次完整的BDC录屏开发
- latex集合的包含_latex 集合相关符号:实数集,整数集,并,包含,真包含
- Bug heroes虫虫英雄······超详细翻译+基本攻略
- 从三室心脏MRI影像检测主动脉瓣病变
- 历年CCF-CSP认证考试题目解法/思想
- 脑波设备mindwaveTGC接口示例
- c3p0详细配置(c3p0-config.xml)及使用
- dasdsadsad
- 第一次放生,感觉很奇妙
热门文章
- 市场上五花八门的固码
- 协议转换器指示灯的含义
- 使用ESXCLI将ESXi 6.5或6.7升级到ESXi 7.0
- 基于串口通信的DSP应用程序在线升级方法
- DSP28335的GPIO口功能应用
- 常用代码模板3——搜索与图论(Bellman-Ford算法 、spfa 算法、floyd算法、Kruskal算法、染色法、匈牙利算法 )
- php redis redis server went away,php连接redis出现Redis server went away,rediswent
- 本地应用通过Dblink查询,导致Weblogic的线程堵塞而垮掉
- 【Unity3D自学记录】自制作手机平衡球游戏
- 计算机B的IP地址是,IP地址202.117.17.255/22是什么地址?()。A.网络地址B.全局 - 信管网...