大數相乘 43 字串相乘

2021-10-05 20:17:34 字數 1638 閱讀 7409

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