题目描述
难度:Middle
相关话题:字符串
比较两个版本号 version1 和 version2 。
如果 version1>version2
返回 1
,如果 version1<version2
返回 -1
, 除此之外返回 0
。
你可以假设版本字符串非空,并且只包含数字和 .
字符。
.
字符不代表小数点,而是用于分隔数字序列。
例如, 2.5
不是“两个半”,也不是“差一半到三”,而是第二版中的第五个小版本。
你可以假设版本号的每一级的默认修订版号为 0
。例如,版本号 3.4
的第一级(大版本)和第二级(小版本)修订号分别为 3
和 4
。其第三级和第四级修订号均为 0
。
示例1:
输入: version1 = "0.1", version2 = "1.1"
输出: -1
示例 2:
输入:version1 = "1.0.1", version2 = "1"
输出: 1
示例 3:
输入: version1 = "7.5.2.4", version2 = "7.5.3"
输出: -1
示例4:
输入:version1 = "1.01", version2 = "1.001"
输出:0
解释:忽略前导零,“01” 和 “001” 表示相同的数字 “1”。
示例 5:
输入:version1 = "1.0", version2 = "1.0.0"
输出:0
解释:version1没有第三级修订号,这意味着它的第三级修订号默认为 “0”。
提示:
-
版本字符串由以点(
.
)分隔的数字字符串组成。这个数字字符串可能 有前导零。 -
版本字符串不以点开始或结束,并且其中不会有两个连续的点。
/**
* @ Javascript中文网 - 前端进阶资源教程 https://www.javascriptc.com/
* @param {string} version1
* @param {string} version2
* @return {number}
*/
var compareVersion = function(version1, version2) {
let arr1=version1.split('.'),
arr2=version2.split('.')
if(arr1.length<arr2.length){
let delt=arr2.length-arr1.length
while(delt-->0) arr1.push('0')
}else{
let delt=arr1.length-arr2.length
while(delt-->0) arr2.push('0')
}
for(let i=0;i<arr1.length;i++){
let n1=+arr1[i],n2=+arr2[i]
if(n1>n2)return 1
else if(n1<n2)return -1
}
return 0
};
看完两件小事
如果你觉得这篇文章对你挺有启发,我想请你帮我两个小忙:
- 把这篇文章分享给你的朋友 / 交流群,让更多的人看到,一起进步,一起成长!
- 关注公众号 「IT平头哥联盟」,公众号后台回复「资源」 免费领取我精心整理的前端进阶资源教程
本文著作权归作者所有,如若转载,请注明出处
转载请注明:文章转载自「 Js中文网 · 前端进阶资源教程 」https://www.javascriptc.com