大数乘法,搞清楚位置和需要加的东西就OK
class Solution(object):
def multiply(self, num1, num2):
"""
:type num1: str
:type num2: str
:rtype: str
"""
n_num1 = len(num1)
n_num2 = len(num2)
res = [0] * (n_num1 + n_num2 + 1)
for i in range(n_num1):
carry = 0
if num1[n_num1 - i - 1] == '0':
continue
for j in range(n_num2):
times = (ord(num1[n_num1 - i - 1]) - ord('0')) * (ord(num2[n_num2- j - 1]) - ord('0'))
sums = times + carry + res[i + j]
res[i + j] = sums % 10
carry = sums / 10
res[i + j + 1] = carry
flag = 0
for i in range(n_num1+n_num2+1):
if res[n_num1+n_num2-i] != 0:
flag = 1
s = res[0:n_num1+n_num2-i+1][::-1]
break
if flag :
return ''.join('%s' %x for x in s)
else :
return '0'