leetcode43. Multiply Strings
阿新 • • 發佈:2018-11-01
python3:
class Solution:
def multiply(self, num1, num2):
"""
:type num1: str
:type num2: str
:rtype: str
"""
carry=0
sum1=''
num1 = num1[::-1]
num2 = num2[::-1]
arr = [0 for i in range(len(num1)+len(num2))]
for i in range(len(num1)):
for j in range(len(num2)):
arr[i+j] = arr[i+j] + int(num1[i])*int(num2[j])
for i in range(len(arr)):
number = int((arr[i]+carry)%10) #當前位
carry = (arr[i]+carry)/10 #進位
sum1 = str(number)+sum1
while (sum1[0]=='0' and len(sum1)>=2):
sum1=sum1[1:]
return sum1
借鑑這裡 https://blog.csdn.net/xiaoling_000666/article/details/80427322#commentsedit 不過原博主寫錯了,少了一個int(),結果是錯的,特此更正。
總結:
- 建立一個全零列表:
arr = [0 for i in range(len(num1)+len(num2))]
- 字串的 a+b和b+a不是一回事,一定要注意,比如說
sum1 = str(number)+sum1
sum1 = sum1+str(number)
意義是不一樣的,前者表示在sum前面新增,後者表示在sum後面新增。