1. 题目描述
两个非常大的数直接进行相加会导致内存溢出,如何将两个非常大的数进行相加而不导致内存溢出:可以将数转化为字符串的形式进习输出
2. 解题思路
当前的两个数相加为a和b两个数组中的元素相加再加上上一轮的进位(pre),相加得到当前进位cur和当前余数num
#0填充
"%06d" % 123
"123".rjust(6,'0')
"123".Ljust(6,'0')
'123'.zfill(6)
3. 代码实现
class Solution:
def add(self,a,b):
n = max(len(a),len(b))
"""判断长度,并对短字符串进行补零"""
if len(a) < n:
a = "0"* (n-len(a)) + a
else:
b = "0"* (n-len(b)) + b
#print(a,b)
res = ""
"""设置pre为上一个进位"""
pre = 0
for i in range(n-1,-1,-1):
"""设置cur为当前进位,num为当前余数"""
cur,num = divmod(int(a[i])+int(b[i])+pre,10)
res += str(num)
pre = cur
"""判断最后是否有进位"""
if cur:
res += str(cur)
return res[::-1]
a = "99999999999"
b = "99"
solution = Solution()
res = solution.add(a,b)
print(res)
print(int(a)+int(b))
"""
#output
100000000098
100000000098
"""