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