ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

36、比较版本号、版本号排序 --- 字节

2021-07-30 19:03:30  阅读:439  来源: 互联网

标签:const version1 version2 版本号 修订 36 --- return


一、比较版本号

题目:

牛客项目发布项目版本时会有版本号,比如1.02.11,2.14.4等等

现在给你2个版本号version1和version2,请你比较他们的大小

版本号是由修订号组成,修订号与修订号之间由一个"."连接。1个修订号可能有多位数字组成,修订号可能包含前导0,且是合法的。例如,1.02.110.10.2都是合法的版本号

每个版本号至少包含1个修订号。

修订号从左到右编号,下标从0开始,最左边的修订号下标为0,下一个修订号下标为1,以此类推。

比较规则:

  1. 比较版本号时,请按从左到右的顺序依次比较它们的修订号。比较修订号时,只需比较忽略任何前导零后的整数值。比如"0.1"和"0.01"的版本号是相等的
  2. 如果版本号没有指定某个下标处的修订号,则该修订号视为0。例如,"1.1"的版本号小于"1.1.1"。因为"1.1"的版本号相当于"1.1.0",第3位修订号的下标为0,小于1;
  3. version1 > version2 返回1,如果 version1 < version2 返回-1,不然返回0。
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 比较版本号
 * @param version1 string字符串 
 * @param version2 string字符串 
 * @return int整型
 */
function compare( version1 ,  version2 ) {
    //先对字符串进行分隔
    const v1 = version1.split(".");
    const v2 = version2.split(".");
    const len = Math.max(v1.length,v2.length);
    //依次比较
    for(let i=0; i<len; i++){
        //将字符串转化为数字
        const n1 = Number(v1[i] || 0);
        const n2 = Number(v2[i] || 0);
        if(n1 > n2) return 1;
        if(n1 < n2) return -1;
    }
    return 0;
}

二、版本号排序

给定一个版本号数组['4.8', '1.7.1', '4.1.9', '5'] ,按照规则进行升序排序。

排序结果:["1.7.1", "4.1.9", "4.8", "5"]

注意:对于首位相同的版本号,进行第二位以及其余位的判断。

function arrSort(arr) {
		arr.sort((version1, version2) => {
			//先对字符串进行分隔
			const v1 = version1.split(".");
			const v2 = version2.split(".");
			const len = Math.max(v1.length, v2.length);
			//依次比较
			for (let i = 0; i < len; i++) {
				//将字符串转化为数字
				const n1 = Number(v1[i] || 0);
				const n2 = Number(v2[i] || 0);
				if (n1 > n2) return 1;
				if (n1 < n2) return -1;
			}
			return 0;
		})
	}

	const arr = ['4.8', '1.7.1', '4.1.9', '5'];
	arrSort(arr);
	console.log(arr); //["1.7.1", "4.1.9", "4.8", "5"]

标签:const,version1,version2,版本号,修订,36,---,return
来源: https://blog.csdn.net/sunnnnh/article/details/119252432

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有