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('')
};