给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。
提示:
num1 和num2 的长度都小于 5100
num1 和num2 都只包含数字 0-9
num1 和num2 都不包含任何前导零
你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式
思路:1.可以根据双指针进行相加i j指向两个字符串末尾。从后向前遍历,
2.如果某个字符串位置为空就补零
3.每一位相加如果大于10就设置进位遍历add为1 否则为0 相加时也要加上add
4.最后遍历完判断add是否为1看是否多出一位,有的话就加上
代码
/**
* @param {string} num1
* @param {string} num2
* @return {string}
*/
var addStrings = function(num1, num2) {
let i= num1.length-1, j = num2.length - 1 , add = 0;
const ans = [];
while(i>=0 || j>=0 || add!==0){
let x = i >= 0 ? num1.charAt(i) - '0' : 0;
let y = j >= 0 ? num2.charAt(j) - '0' : 0;
let result = x + y + add;
ans.push(result % 10)
add = Math.floor(result / 10);
i--;
j--;
}
return ans.reverse().join('')
};