题目描述:
给定两个字符串形式的非负整数 num 和 num2 ,计算它们的和并同样以字符串形式返回。
你不能使用任何內建的用于处理大整数的库(比如 BigInteger), 也不能直接将输入的字符串转换为整数形式。
示例:
输入:num1 = “11”, num2 = “123”
输出:“134”
我的题解:
/**
* @param {string} num1
* @param {string} num2
* @return {string}
*/
var addStrings = function(num1, num2) {
// 两个指向末尾的指针,add控制进位
let i = num1.length - 1, j = num2.length - 1, add = 0
// 将两个字符串划为数组
const arr1 = num1.split(''), arr2 = num2.split('')
// 新建数组存储结果
const cur = new Array()
while(i >= 0 || j >= 0 || add!= 0) {
const x = i >= 0 ? arr1[i] * 1 : 0
const y = j >= 0 ? arr2[j] * 1 : 0
// 计算结果
const z = x + y + add
// 存入数组
cur.push(z % 10)
// 调整进位
add = z / 10 >= 1 ? 1 : 0
i--
j--
return cur.reverse().join('')
/*
没想明白为什么这么写有个测试用例会报错
* // 定义结果
* let result = 0
* for (let k = 0; k <= cur.length - 1; k++) {
* // 结果为从数组里顺序取数后与1、10、100...相乘后相加
* result += cur[k] * Math.pow(10, k)
* console.log(result);
* }
* return result + ''
*/
};
其他解法:

更牛逼的解法:

总结:
- 字符串相加要熟练运用指针
- 数组方法要熟练

本文探讨了如何在不依赖内置大整数处理库的情况下,通过指针操作实现两个字符串非负整数的加法。提供了详细的解题思路和一个示例,以及对比其他高效解决方案。重点在于理解字符串处理和数组操作在解决此类问题中的应用。

被折叠的 条评论
为什么被折叠?



