题目:
给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。
提示:
num1 和num2 的长度都小于 5100
num1 和num2 都只包含数字 0-9
num1 和num2 都不包含任何前导零
你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式
思路:
1. 比较两个字符串的长度,将较短的那个前面补足 0
2. 将两个字符串转为倒序数组
3. 将字符串中的数据两两相加,并加上上一个位置的进位
4. 若最后一个进位大于0,则加入结果中
5. 将求得的结果倒序,并转为字符串
代码实现:
/**
* @param {string} num1
* @param {string} num2
* @return {string}
*/
var addStrings = function(num1, num2) {
let len1 = num1.length, len2 = num2.length;
if(len1 < len2) {
num1 = "0".repeat(len2 - len1) + num1;
} else {
num2 = "0".repeat(len1 - len2) + num2;
}
let arr1 = num1.split('').reverse();
let arr2 = num2.split('').reverse();
let res = [], carry = 0, sum = 0;
for(let i = 0; i < arr1.length; i++) {
sum = (+arr1[i] + +arr2[i] + +carry) % 10;
carry = parseInt((+arr1[i] + +arr2[i] + carry) / 10);
res.push(sum);
}
if(carry > 0) {
res.push(carry)
}
return res.reverse().join('')
};
运行结果: