返回
LeetCode 手把手教你 Add Strings,轻松拿捏字符串加法!
IOS
2023-09-11 17:40:31
引言
对于初学编程的同学来说,字符串处理往往令人头疼不已。今天,我们将通过 LeetCode 的一道简单题目 Add Strings,深入浅出地为你揭秘字符串加法的奥秘,让你轻松掌握这门必备技能。
题目
给定两个非负整数 num1 和 num2,它们以字符串形式表示。返回 num1 和 num2 的和,同样以字符串形式表示。
示例
输入:num1 = "11", num2 = "123"
输出:"134"
算法详解
字符串加法的核心在于将字符串中的数字逐位相加,就像我们小时候学习的竖式加法一样。为了便于理解,我们以示例中的 "11" 和 "123" 为例:
1 1
+ 1 2 3
------
1 3 4
具体步骤如下:
- 将 num1 和 num2 的字符串从后往前遍历。
- 对每个位置的字符,将其转换成整数(假设 '1' 对应 1,'2' 对应 2,以此类推)。
- 将两个整数相加,并记录和的个位数。
- 将和的十位数进位到下一位。
- 重复上述步骤,直到遍历完所有字符。
- 如果最后一位有进位,则在结果前面加上进位数。
代码实现
JavaScript:
const addStrings = (num1, num2) => {
let carry = 0;
let result = "";
for (let i = num1.length - 1, j = num2.length - 1; i >= 0 || j >= 0; i--, j--) {
const digit1 = parseInt(num1[i] || '0');
const digit2 = parseInt(num2[j] || '0');
const sum = digit1 + digit2 + carry;
carry = Math.floor(sum / 10);
result = (sum % 10) + result;
}
return carry > 0 ? carry + result : result;
};
Python:
def addStrings(num1, num2):
carry = 0
result = []
i = len(num1) - 1
j = len(num2) - 1
while i >= 0 or j >= 0 or carry:
digit1 = int(num1[i]) if i >= 0 else 0
digit2 = int(num2[j]) if j >= 0 else 0
sum = digit1 + digit2 + carry
carry = sum // 10
result.append(str(sum % 10))
i -= 1
j -= 1
return ''.join(result[::-1])