分类:字符串
题目描述
给定两个字符串形式的非负整数 num1
和num2
,计算它们的和。
提示:
num1
和num2
的长度都小于 5100num1
和num2
都只包含数字0-9
num1
和num2
都不包含任何前导零- 你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式
思路:
将位数较小的字符串前置补0,然后从后往前做加法,大于10进位;
代码实现:
/**
* @param {string} num1
* @param {string} num2
* @return {string}
*/
var addStrings = function (num1, num2) {
const len1 = num1.length;
const len2 = num2.length;
const maxLength = Math.max(len1, len2);
len1 < len2 ? num1 = num1.padStart(maxLength, '0') : num2 = num2.padStart(maxLength, '0');
let sum = 0;
let result = [];
for (let i = maxLength - 1; i > 0; i--) {
sum = (num1[i] - 0) + (num2[i] - 0) + (result[i] || 0);
if (sum < 10) {
result[i] = sum;
} else {
result[i] = sum % 10;
result[i - 1] = 1;
}
}
sum = (num1[0] - 0) + (num2[0] - 0) + (result[0] || 0);
if (sum < 10) {
result[0] = sum;
} else {
result[0] = sum % 10;
result.unshift(1);
}
return result.join('');
};
运行结果: