华为机试真题 python实现】两个超大整型数相加
时间: 2023-05-08 12:00:38 浏览: 130
python 实现两数相加
要求实现一个函数,输入为两个字符串类型的超大整型数,输出为它们相加后的字符串类型结果。
这个问题的难点在于超大整型数的加法运算。由于Python语言天生支持大整数运算,所以我们可以直接将两个超大整型数转换成整型数,然后做标准的加法运算即可。但是,由于输入的是字符串类型的超大整型数,我们需要先将它们转换成整型数,同时需要考虑到进位的问题。具体实现可以参考以下代码:
def add_str(s1: str, s2: str) -> str:
# 先将字符串转换成列表并翻转
s1, s2 = list(s1[::-1]), list(s2[::-1])
res = [] # 用来保存结果的列表
carry = 0 # 用来保存进位的数
while s1 or s2: # 当两个列表至少有一个非空时循环
# 将列表转换成整数并将其加起来
num1 = int(s1.pop()) if s1 else 0
num2 = int(s2.pop()) if s2 else 0
s = num1 + num2 + carry
# 计算进位
if s > 9:
carry = 1
s -= 10
else:
carry = 0
# 将结果插入列表
res.insert(0, s)
# 如果最高位有进位,将其加上
if carry:
res.insert(0, 1)
# 将列表转换成字符串类型的结果并返回
return ''.join(str(i) for i in res)
以上代码首先将输入的字符串转换成列表并翻转,这样方便我们从低位开始做加法运算。然后使用一个while循环将两个列表中的数字按位相加,同时考虑到进位的情况。最后再将结果列表转换回字符串类型并返回即可。当然,如果要写一个更为严谨的程序,还需要考虑一些边界情况,比如输入为空字符串、输入的字符串中有非数字字符等情况。
阅读全文