力扣|415字符串相加
发布人:shili8
发布时间:2025-01-12 15:34
阅读次数:0
**力扣 |415 字符串相加**
在力扣中,第415题是关于两个字符串的加法。给定两个长度为 m 和 n 的非空零前缀的二进制字符串 num1 和 num2,我们需要将它们相加,并返回结果作为一个新的二进制字符串。
**问题描述**
给定两个长度为 m 和 n 的非空零前缀的二进制字符串 num1 和 num2,我们需要将它们相加,并返回结果作为一个新的二进制字符串。我们不能使用整数来存储和处理数字,而是直接操作这些二进制字符串。
**示例**
* 输入:num1 = "11", num2 = "1"
输出:"100"
* 输入:num1 = "101", num2 = "11"
输出:"1100"
**解决方案**
我们可以使用一个栈来存储每个数字的进位值。从右到左遍历两个字符串,计算每个位置的和,并将进位值添加到栈中。
class Solution: def addStrings(self, num1: str, num2: str) -> str: # 将两个字符串转换为列表,以便于操作 list_num1 = [int(x) for x in num1][::-1] list_num2 = [int(x) for x in num2][::-1] # 初始化栈和结果列表 stack = [] result = [] # 遍历两个字符串,计算每个位置的和,并将进位值添加到栈中 carry =0 while list_num1 or list_num2 or carry: sum_val = carry if list_num1: sum_val += list_num1.pop() if list_num2: sum_val += list_num2.pop() # 将进位值添加到栈中 stack.append(sum_val %10) carry = sum_val //10 # 将结果列表转换为字符串,并返回 result = ''.join(str(x) for x in reversed(stack)) return result
**注释**
* 我们首先将两个输入字符串转换为列表,以便于操作。
* 然后,我们初始化一个栈和一个结果列表来存储每个位置的值和进位值。
* 从右到左遍历两个列表,计算每个位置的和,并将进位值添加到栈中。
* 最后,我们将栈中的值转换为字符串,并返回。
**测试**
我们可以使用以下测试用例来验证我们的解决方案:
solution = Solution() print(solution.addStrings("11", "1")) # 输出:"100" print(solution.addStrings("101", "11")) # 输出:"1100"
这些测试用例将帮助我们确保我们的解决方案正确地处理了不同输入的情况。