free-programming-books
free-programming-books copied to clipboard
String-解题: 字符串相加(NO.415)
给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。
注意:
- num1 和num2 的长度都小于 5100.
- num1 和num2 都只包含数字 0-9.
- num1 和num2 都不包含任何前导零。
- 你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式。
面试进阶题库
解题思路
max取两数最大的长度,- 递减循环一位一位进行计算,
%大于10,取0,floor向下取整,- 最后一位,且大于10则直接补一位,返回,否则循环结束返回结果;
代码
/**
* @param {string} num1
* @param {string} num2
* @return {string}
*/
var addStrings = function(num1, num2) {
let len1 = num1.length-1;
let len2 = num2.length-1;
let maxNum = Math.max(len1,len2);
let result ="";
let carry = 0;
for(let i=0;i<=maxNum;i++){
let key1 = parseInt(num1[len1-i]||0);
let key2 = parseInt(num2[len2-i]||0);
let item = key1+ key2 + carry;
result = (item%10)+result;
carry = Math.floor(item/10);
if(i == maxNum && carry == 1){
return carry+result;
}
}
return result;
};
