题目:
难度: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
};
扩展阅读: