給定兩個以字串形式表示的非負整數 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
return res;
}private
: string mult
(string num1,
char num2)
//大數乘以1~9
while
(carry)
reverse
(res.
begin()
,res.
end())
;return res;
} string add
(string num1, string num2)
//大數加法
while
(n1>=0)
while
(n2>=0)
if(carry) res+
=(carry+
'0')
;reverse
(res.
begin()
,res.
end())
;return res;}}
;
解法二:陣列
陣列儲存乘法的每一位,最後一起進製;
速度更快,空間更省;
class
solution
string res="";
for(
int k=
0;ksize()
;k++
) res+
=mult[k]
+'0'
;reverse
(res.
begin()
,res.
end())
;return res[0]
=='0'
? res.
substr(1
):res;
}private
: vector<
int> mult;
};
注意點
最後需要判斷答案第一位是否為0,若無進製可能為0;
43 字串相乘 大數相乘(字串相乘)
給定兩個以字串形式表示的非負整數num1和num2,返回num1和num2的乘積,它們的乘積也表示為字串形式。示例 1 輸入 num1 2 num2 3 輸出 6 示例 2 輸入 num1 123 num2 456 輸出 56088 說明 num1和num2的長度小於110。num1和num2只包含...
大數相乘 43 字串相乘 中等
給定兩個以字串形式表示的非負整數 num1 和 num2,返回 num1 和 num2 的乘積,它們的乘積也表示為字串形式。示例 1 輸入 num1 2 num2 3 輸出 6 示例 2 輸入 num1 123 num2 456 輸出 56088 說明 num1 和 num2 的長度小於110。nu...
大數相乘 LeetCode43 字串相乘
題目 給定兩個以字串形式表示的非負整數 num1 和 num2,返回 num1 和 num2 的乘積,它們的乘積也表示為字串形式。示例 1 輸入 num1 2 num2 3 輸出 6 示例 2 輸入 num1 123 num2 456 輸出 56088 說明 num1 和 num2 的長度小於110...