字串相乘

2021-10-13 05:30:10 字數 1550 閱讀 8306

來自leetcode43

**如下:

class

solution

:def

multiply

(self, num1:

str, num2:

str)

->

str:

""" 方法:

豎式計算的快捷方法

num1的n位數*num2的m位數 結果res最多有n+m位;

從左往右做index(首位0),num1的第i位和num2的第j位相乘,

得到的兩位數記為0y或者xy,

該兩位數的第一位在res中的index為i+j,

第二位的index為i+j+1

"""ifnot num1 or

not num2 or

len(num1)==0

orlen

(num2)==0

:return

none

if num1 ==

"0"or num2 ==

"0":

# 容易漏掉

return

"0" len_num1 =

len(num1)

len_num2 =

len(num2)

res =[0

]*(len_num1 + len_num2)

# n+m位,用於累加

for i in

range

(len_num1)

: int1 =

ord(num1[i])-

ord(

"0")

# 字串轉成整數

for j in

range

(len_num2)

: int2 =

ord(num2[j])-

ord(

"0")

res_tmp = int1 * int2

res[i+j]

+= res_tmp //

10# 十位

res[i+j+1]

+= res_tmp %

10# 個位

for ix in

range

(len

(res)-1

,-1,

-1):

# 整理進製

if res[ix]

>9:

res[ix-1]

+= res[ix]

//10

# 注意要先計算進製

res[ix]

= res[ix]%10

res =

[str

(r)for r in res]

# 轉成字串

return

"".join(res)

if res[0]

!="0"

else

"".join(res[1:

])

字串相乘

定給兩個以字串形式表示的非負整數 num1狀語從句 num2,報道檢視 num1狀語從句 num2的乘積,它們的乘積也表示為字串形式。示例1 輸入 num1 2 num2 3 輸出 6 示例2 輸入 num1 123 num2 456 輸出 56088 說明 num1狀語從句 num2的長度小於11...

字串相乘

給定兩個以字串形式表示的非負整數num1和num2,返回num1和num2的乘積,它們的乘積也表示為字串形式。思路 經過學習,大致思路有兩種 第一種思路為進行每一位相乘運算時,同時處理進製,以每一位保持小於等於 9 大於等於 0 的數儲存到char陣列中。第二種思路為先進行每一位的相乘運算,儲存到c...

字串相乘

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