LeetCode 43 字串相乘

2021-10-07 06:22:18 字數 1314 閱讀 7627

給定兩個以字串形式表示的非負整數 num1 和 num2,返回 num1 和 num2 的乘積,它們的乘積也表示為字串形式。

之前做過乙個字串加法的。當然乘法的複雜度遠遠高於加法。

我們算乘法,是寫豎式的。

上面這個豎式和我們平時列的還不太一樣,但這樣列更加容易程式設計實現。

解釋一下,用乙個陣列res儲存num2中的乙個字元和num1所有字元的乘積;然後得到的結果,綜合一下之前的計算結果。

class

solution

:def

multiply

(self, num1:

str, num2:

str)

->

str:

m, n =

len(num1)

,len

(num2)

res =[0

]*(m+n)

for i in

range

(m-1,-

1,-1

):for j in

range

(n-1,-

1,-1

):mul =

(ord

(num1[i])-

ord(

'0'))*

(ord

(num2[j])-

ord(

'0')

) p2 = i+j+

1# 個位(在數值中較高的位置)

p1 = i+j # 十位(在陣列中較低的位置)

temp = mul + res[p2]

# 綜合j之前的計算結果

res[p2]

= temp %

10 res[p1]

+= temp //

10# 進製 用+=

index =

0# 去除掉開頭的0 如果有的話

while index <

(m+n)

and res[index]==0

: index +=

1if index ==

(m+n)

:return

'0'# 按順序拼接

ans =

''.join(

str(i)

for i in res[index:])

return ans

LeetCode43 字串相乘

給定兩個以字串形式表示的非負整數num1和num2,返回num1和num2的乘積,它們的乘積也表示為字串形式。示例 1 輸入 num1 2 num2 3 輸出 6 示例 2 輸入 num1 123 num2 456 輸出 56088 題目分析 如果兩個字串中有乙個為0,則結果是0 否則的話,將其中乙...

LeetCode43字串相乘

給定兩個以字串形式表示的非負整數num1和num2,返回num1和num2的乘積,它們的乘積也表示為字串形式。示例 1 輸入 num1 2 num2 3 輸出 6 示例 2 輸入 num1 123 num2 456 輸出 56088 說明 num1和num2的長度小於110。num1和num2只包含...

leetcode43 字串相乘

給定兩個以字串形式表示的非負整數 num1 和 num2,返回 num1 和 num2 的乘積,它們的乘積也表示為字串形式。示例 1 輸入 num1 2 num2 3 輸出 6 示例 2 輸入 num1 123 num2 456 輸出 56088 說明 num1 和 num2 的長度小於110。nu...