給定兩個以字串形式表示的非負整數 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...