leetcode 165 比较版本号 JavaScript

leetcode 165 比较版本号 JavaScript
在这里插入图片描述
思路一:
将version1、version2分别分割,放入数组中,接下来从左往右读取v1和v2的内容对比,一旦出现大于或者小于的情况,遍历提前结束,返回-1或1;否则,如果遍历完成后仍然没有出现更大的一方,返回0
(不太理解为什么这道题是中等,可能是企业面试不让用split(‘.’),那还有另外一种思路就是写双指针了,晚点更新双指针方法)
代码如下:

/**
 * @param {string} version1
 * @param {string} version2
 * @return {number}
 */
var compareVersion = function(version1, version2) {
    let ver1 = version1.split('.');
    let ver2 = version2.split('.');
    for(let i = 0;i<Math.max(ver1.length,ver2.length);i++){
        let tmp1 = ver1[i]?parseInt(ver1[i]):0;
        let tmp2 = ver2[i]?parseInt(ver2[i]):0;
        if(tmp1>tmp2){
            return 1;
        }
        if(tmp1<tmp2){
            return -1;
        }
    }
    return 0;
};

在这里插入图片描述
思路二:(双指针)
双指针法直接对字符串进行遍历,每次进入都将原始值乘10再加上当前遍历的数 比如1.101 第一次遍历 值为1结束;下一次循环是遍历101,一开始1,之后1x10+0=10 最后10*10+1=101遍历结束。也就是每次都获取到两个.之间的值,然后进行比较。

var compareVersion = function(version1, version2) {
    let i = 0;
    let j = 0;

    while(i<version1.length||j<version2.length){
        let res1 = 0;
        let res2 = 0;
        while(i<version1.length&&version1.charAt(i)!='.'){
            res1 = res1*10 + (version1.charAt(i++)-'0');
        }
        while(j<version2.length&&version2.charAt(j)!='.'){
            res2 = res2*10 +(version2.charAt(j++)-'0');
        }
        if(res1>res2) return 1;
        if(res1<res2) return -1;
        i++;
        j++;
    }
    return 0;
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值