给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。
提示:
- num1 和num2 的长度都小于 5100
- num1 和num2 都只包含数字 0-9
- num1 和num2 都不包含任何前导零
- 你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式
题解
创建2个指针 i, j 指向 num1 与 num2 的末端,分别逐位计算
计算的数字大于 10 则进位,储存在 carry 变量中
最后计算完后,如果 carry 大于 0 则 在进一位
/*** @param {string} num1* @param {string} num2* @return {string}*/var addStrings = function(num1, num2) {let i = num1.length - 1let j = num2.length - 1const len = Math.max(i, j)let carry = 0let res = ''for (let k = 0; k < len + 1; k++) {let n1 = num1[i] ? Number(num1[i]) : 0let n2 = num2[j] ? Number(num2[j]) : 0let num = n1 + n2 + carryif (num >= 10) {num -= 10carry = 1} else {carry = 0}res = `${num}${res}`i--j--}if (carry > 0) {res = `${carry}${res}`}return res};
