题目链接:https://leetcode-cn.com/problems/add-strings/
description:
给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。
注意:
num1 和num2 的长度都小于 5100.
num1 和num2 都只包含数字 0-9.
num1 和num2 都不包含任何前导零。
你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式。
实现思路:
将两个字符串用0补齐使长度相等,然后再逆转,通过设置一个pre变量来进行进位控制。
JavaScript代码实现:
var addStrings = function(num1, num2) {
let arr1 = num1.split('')
let arr2 = num2.split('')
let arr1_num = arr1.map(v => {
return parseInt(v)
})
let arr2_num = arr2.map(v => {
return parseInt(v)
})
arr1_num.reverse()
arr2_num.reverse()
let len_arr1_num = arr1_num.length;
let len_arr2_num = arr2_num.length;
let dis = len_arr1_num > len_arr2_num ? len_arr1_num - len_arr2_num : len_arr2_num - len_arr1_num
for (let i = 0; i < dis; i++) {
if (len_arr1_num > len_arr2_num) {
arr2_num.push(0)
} else {
arr1_num.push(0)
}
}
// console.log(arr1_num, arr2_num)
let i = 0;
let pre = 0
let rs = []
while (i < arr1_num.length) {
let t = arr1_num[i] + arr2_num[i] + pre
if (t >= 10) {
rs.push(t - 10)
pre = 1
} else {
rs.push(t)
pre = 0
}
i++
}
rs.reverse()
// console.log(rs)
if (pre === 1) {
rs.unshift(1)
}
let result = ''
rs.forEach(v => {
result+=v
})
return result
};
let rs = addStrings("9", "99")
console.log(rs)