https://leetcode-cn.com/problems/add-strings/
描述
给定两个字符串形式的非负整数 num1
和num2
,计算它们的和。
注意:
num1
和num2
的长度都小于 5100.num1
和num2
都只包含数字0-9
.num1
和num2
都不包含任何前导零。- 你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式。
分析
不能直接转换整数,就转换成数组,carry存放进位,再将每位之和与进位分别相加。最后转换字符串。需要注意的是进位的判断。
/**
* @param {string} num1
* @param {string} num2
* @return {string}
*/
var addStrings = function(num1, num2) {
let arr1 = [...num1]
let arr2 = [...num2]
let carry = 0, sarr = []
while (arr1.length || arr2.length) {
let a = (arr1.pop() - 0) || 0
let b = (arr2.pop() - 0) || 0
sarr.unshift((a + b + carry) % 10)
carry = (a + b + carry) >= 10 ? 1 : 0
}
if (carry === 1) {
sarr.unshift(1)
}
return sarr.join('')
};