两个大数相加。
1、是整数;
2、两个数无限大,long都装不下;
3、不能用BigInteger;
4、不能用任何包装类提供的运算方法;
5、两个数都是以字符串的方式提供。
* 字符串逐位相加,需要进位则进位处理,考虑两个问题:
* 1、char怎么转换为integer, 减去'0'即可
* 2、怎么处理对应位相加?反转字符串相加,正确处理进位即可,
* 这样个位对应个位,十位对应十位,剩余的直接追加
不反转,倒着相加,注意add,最后可能还有add!!!
注意python不能直接字符相减,使用ord()得到ASCII码。
def Big_sum(str1, str2):
# 还是不考虑负数了~
if not str1:
return str2
if not str2:
return str1
n = max(len(str1), len(str2))
if len(str1) < n:
str1 = "0"*(n-len(str1)) + str1
elif len(str2) < n:
str2 = "0"*(n-len(str2)) + str2
out = ""
add = 0
for i in range(-1, -n-1, -1):
if ord(str1[i]) - ord("0") + ord(str2[i]) - ord("0") + add > 9:
out = "%s"%(ord(str1[i])