xiqe / code-train

前端算法

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

字符串相加

xiqe opened this issue · comments

字符串相加

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

注意:

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

reply

var addStrings = function(num1, num2) {
    // 获取两者的最大长度,用于循环次数
    let max = Math.max(num1.length,num2.length);
    let result = [];
    // 设置一个变量用于记录是否进位1
    let tmp = 0;
    for(let i=0;i<=max;i++){
        // 判断是否存在,不存在为0
        let x = num1[num1.length-1-i]?num1[num1.length-1-i]:0;
        let y = num2[num2.length-1-i]?num2[num2.length-1-i]:0;
        // 判断是否是类似4+6,18+82这类情况
        if(i!==max || tmp !==0){
          result.unshift((parseInt(x)+parseInt(y) + tmp)%10);
        }
        // 判断位数相加是否大于9,是否需要进1
        if(parseInt(x)+parseInt(y)+tmp>9){
            tmp = 1;
        } else {
            tmp = 0;
        }
    }
    return result.join('')
};