415. 字符串相加

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

注意:

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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/add-strings
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

题解

从后向前按位相加,最后删除长度大于1的数组的前置0即可

/**
 * @param {string} num1
 * @param {string} num2
 * @return {string}
 */
var addStrings = function(num1, num2) {
    let res = Array(Math.max(num1.length, num2.length) + 1).fill(0)
    let temp = 0
    for (let i = 0; i < res.length; i++) {
        res[res.length - 1 - i] = (num1[num1.length - 1 - i] ? num1[num1.length - 1 - i] : 0) * 1 + (num2[num2.length - 1 - i] ? num2[num2.length - 1 - i] : 0) * 1 + temp
        if (res[res.length - 1 - i] > 9) {
            res[res.length - 1 - i] = res[res.length - 1 - i] - 10
            temp = 1
        } else {
            temp = 0
        }
    }
    while (res[0] == 0 && res.length > 1) {
        res.shift()
    }
    return res.join('')
};