leetcode 43 字串相乘 python

2021-09-26 23:11:55 字數 2191 閱讀 8663

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

示例 1:

輸入: num1 = 「2」, num2 = 「3」

輸出: 「6」

示例 2:

輸入: num1 = 「123」, num2 = 「456」

輸出: 「56088」

說明:num1 和 num2 的長度小於110。

num1 和 num2 只包含數字 0-9。

num1 和 num2 均不以零開頭,除非是數字 0 本身。

不能使用任何標準庫的大數型別(比如 biginteger)或直接將輸入轉換為整數來處理。

class

solution

:def

multiply

(self, num1:

str, num2:

str)

->

str:

times=

1while num1!=

''and num1[-1

]=='0':

times*=

10 num1=num1[:-

1]while num2!=

''and num2[-1

]=='0':

times*=

10 num2=num2[:-

1]sum=

0 i,j=0,

0 len1,len2=

len(num1)

,len

(num2)

if len1==

0or len2==0:

return

"0"while

(i: l=

int(num1[i])*

(10**(len1-i-1)

) j=

0while

(j: r=

int(num2[j])*

(10**(len2-j-1)

)sum

+=r*l

j+=1 i+=

1return

str(

sum*times)

class

solution

:def

multiply

(self, num1:

str, num2:

str)

->

str:

num1=num1[::

-1] num2=num2[::

-1] i,j=0,

0 len1,len2=

len(num1)

,len

(num2)

isum=[0

for i in

range

(len1+len2)

]while

(i: l=

int(num1[i]

) j=

0while

(j: r=

int(num2[j]

) a=r*l

isum[i+j]

+=a j+=

1 i+=

1 i,b=0,

0sum=''

while

(i<

len(isum)):

a=isum[i]

+b b=a//

10sum

+=str

(a%10

) i+=

1sum

=sum[:

:-1]

ifsum

=='0'

:return

'0'while

len(

sum)

>

1and

sum[0]

=='0'

:sum

=sum[1

:]return

sum

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...