leetcode 415 字符串相加 JavaScript

leetcode 415 字符串相加 JavaScript
在这里插入图片描述

这题用JavaScript做还真不太容易,很多需要注意的点
代码如下:

/**
 * @param {string} num1
 * @param {string} num2
 * @return {string}
 */
var addStrings = function(num1, num2) {
    let i = num1.length-1;
    let j = num2.length-1;
    let cur = 0;
    let jw = 0;
    let res = '';
    while(i>=0||j>=0||jw!=0){
        if(i >= 0){
            cur += num1.charAt(i--) - '0'; 
        }
        if(j >= 0){
            cur += num2.charAt(j--) - '0';
        }
        cur += jw;
        jw = Math.floor(cur / 10);//更新进位
        res += cur % 10;
        cur = 0;
    }
    return res.split('').reverse().join('');
};

思路:
双指针实现每个数对比计算,两个指针初始均指向字符串的最右边,之后进入循环,用cur统计本次计算的值,jw表示进位,res为获取结果
需要注意的点在哪里呢?
①String转Number
②JavaScript的除法和Java不同,它可以返回有小数的值,但我们希望拿到整数位,这里复习一下Math取整的相关api:

Math.round(x) // 四舍五入,Math.round(0.8),得到结果为1;Math.round(0.3),结果为0;
Math.floor(x) // 向下取整,Math.floor(0.8)与Math.floor(0.3),均为0;
Math.ceil(x) //向上取整,Math.ceil(0.8)与Math.ceil(0.3),均为1。

因此获取整数部分使用Math.floor(x),获取到本次循环的进位jw

③最后是将本次循环计算的值cur拼接到res中,直接+=即可。
④拼接完成后获得的字符串res是反的,字符串需要进行反转,使用最经典的
split(’’).reverse().join(’’)快速完成。
split(’’) 表示分割字符串并存放到数组中,括号里的值表示根据’‘分割,比如split(’,’)表示按字符串里面的逗号进行分割,而’‘表示每个字符都分割,最后存入数组。
reverse() 是数组的反转,[1,2,3,4,5]->[5,4,3,2,1];
join(’’) 和split(’’)做的是相反的事情,也就是将数组的所有元素进行拼接,变成字符串。
最后得到相应的结果
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值