415. 字符串相加|刷题打卡

95 阅读1分钟

一、题目描述:

给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。 提示:

  1. num1 和num2 的长度都小于 5100
  2. num1 和num2 都只包含数字 0-9
  3. num1 和num2 都不包含任何前导零
  4. 你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式 LeetCode

二、思路分析:

  1. 把两个字符串分别转成数组然后反转。
  2. 挨个计算每个元素的和。注意不要数组越界了。
  3. 然后把个位的数字加到str上面,把十位的数字存起来下次循环使用。
  4. 最后判断存起来的十位数字是否为1,如果为1就添加到str的最前面,否则直接返回即可。

三、AC 代码:

/**
 * @param {string} num1
 * @param {string} num2
 * @return {string}
 */
var addStrings = function(num1, num2) {
    num1 = num1.split('').reverse();
    num2 = num2.split('').reverse();
    let str = '';
    let ten = 0;

    for(let i = 0; i < num1.length || i < num2.length; i++) {
        let sum = 0;
        if(i >= num1.length) {
            sum = +num2[i] + ten;
        } else if (i >= num2.length) {
            sum = +num1[i] + ten;
        } else {
            sum = +num1[i] + +num2[i] + ten;
        }
        
        ten = Math.floor(sum / 10);
        str =  sum % 10 + str;
    }
    return ten ? ten + str : str;
};

四、总结:

代码简单通俗易懂,打工人加油
本文正在参与「掘金 2021 春招闯关活动」, 点击查看 活动详情