当前位置:   article > 正文

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

版本号排序

一、比较版本号

题目:

牛客项目发布项目版本时会有版本号,比如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。
  1. /**
  2. * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
  3. *
  4. * 比较版本号
  5. * @param version1 string字符串
  6. * @param version2 string字符串
  7. * @return int整型
  8. */
  9. function compare( version1 , version2 ) {
  10. //先对字符串进行分隔
  11. const v1 = version1.split(".");
  12. const v2 = version2.split(".");
  13. const len = Math.max(v1.length,v2.length);
  14. //依次比较
  15. for(let i=0; i<len; i++){
  16. //将字符串转化为数字
  17. const n1 = Number(v1[i] || 0);
  18. const n2 = Number(v2[i] || 0);
  19. if(n1 > n2) return 1;
  20. if(n1 < n2) return -1;
  21. }
  22. return 0;
  23. }

二、版本号排序

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

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

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

  1. function arrSort(arr) {
  2. arr.sort((version1, version2) => {
  3. //先对字符串进行分隔
  4. const v1 = version1.split(".");
  5. const v2 = version2.split(".");
  6. const len = Math.max(v1.length, v2.length);
  7. //依次比较
  8. for (let i = 0; i < len; i++) {
  9. //将字符串转化为数字
  10. const n1 = Number(v1[i] || 0);
  11. const n2 = Number(v2[i] || 0);
  12. if (n1 > n2) return 1;
  13. if (n1 < n2) return -1;
  14. }
  15. return 0;
  16. })
  17. }
  18. const arr = ['4.8', '1.7.1', '4.1.9', '5'];
  19. arrSort(arr);
  20. console.log(arr); //["1.7.1", "4.1.9", "4.8", "5"]

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/447790
推荐阅读
相关标签
  

闽ICP备14008679号