前端算法-版本号比对

简介: 前端算法-版本号比对

题目

给你两个版本号 version1version2 ,请你比较它们。比较版本号时,请按从左到右的顺序依次比较它们的修订号。比较修订号时,只需比较 忽略任何前导零后的整数值

输入: version1 = "1.01", version2 = "1.001"
输出: 0
解释: 忽略前导零,"01" 和 "001" 都表示相同的整数 "1"

思路一

我们先使用split方法将版本号分割成为数组,然后取两个版本号最大长度进行迭代,使用Math.max方法获取到两个形参的最大值,存储在len变量中,然后使用循环将数组元素逐个转换成数字,比较大小,使用三目运算进行判断,如果数组值若不为数值,则定义为0,并用num1变量和num2变量进行存储,在将当前num1和num2比较,如果num1大则返回1,如果num2大返回-1,如果相等则不行操作,如果没有返回则说明两者相等,返回0即可

const compareVersion = (version1, version2) => {
    let [v1, v2] = [version1.split('.'), version2.split('.')];
    let len = Math.max(v1.length, v2.length);
    for (let i = 0; i < len; i++) {
        const num1 = v1[i] ? parseInt(v1[i]) : 0;
        const num2 = v2[i] ? parseInt(v2[i]) : 0;
        if (num1 > num2) {
            return 1;
        } else if (num1 < num2) {
            return -1;
        }
    }
    return 0;
};

思路二

我们先使用split方法处理字符串,将其转换成数组,再进行比较数组的长度,使用||运算符判断v1[i]或者v2[i]存不存在,不存在的话就给指定数组添加0,在进行比较数组的每一项如果v1大则返回1,如果v2大则返回-1,如果相等则返回0作者:清风热忱

var compareVersion = function (version1, version2) {
    let v1 = version1.split('.');
    let v2 = version2.split('.');
    v1 = v1.map(item => Number.parseInt(item));
    v2 = v2.map(item => Number.parseInt(item));
    let len = Math.max(v1.length, v2.length);
    for (let i = 0; i < len; i++) {
        v1[i] || v1.push(0);
        v2[i] || v2.push(0);
        if (v1[i] > v2[i]) {
            return 1;
        } else if (v1[i] < v2[i]) {
            return -1;
        }
    }
    return 0;
};


相关文章
|
1月前
|
算法 前端开发 数据可视化
数据结构与算法在前端开发中的实际应用
本文将探讨数据结构与算法在前端开发中的实际应用,重点介绍在处理大规模数据、优化性能和提升用户体验方面的具体场景和解决方案。
|
10天前
|
算法 前端开发
前端算法 岛屿的最大面积 DFS(深度优先搜索)
前端算法 岛屿的最大面积 DFS(深度优先搜索)
11 0
|
3月前
|
算法 前端开发
前端算法-路径总和
前端算法-路径总和
|
3月前
|
算法 前端开发
前端算法-平衡二叉树
前端算法-平衡二叉树
|
3月前
|
算法 前端开发
前端算法-将有序数组转换为二叉搜索树
前端算法-将有序数组转换为二叉搜索树
|
3月前
|
算法 前端开发
前端算法-对称二叉树
前端算法-对称二叉树
|
3月前
|
存储 算法 前端开发
前端算法- 二叉树的中序遍历
前端算法- 二叉树的中序遍历
|
3月前
|
存储 算法 前端开发
前端算法-合并两个有序数组
前端算法-合并两个有序数组
|
3月前
|
存储 算法 前端开发
|
3月前
|
算法 前端开发
前端算法-x 的平方根
前端算法-x 的平方根