43 字串相乘

2021-10-10 00:01:44 字數 1396 閱讀 1543

給定兩個以字串形式表示的非負整數 num1 和 num2,返回 num1 和 num2 的乘積,它們的乘積也表示為字串形式。

依次取num1的位數和num2相乘,然後相加,記得要補零移位。

class

solution

int m = num1.

size()

, n = num2.

size()

; string ans ="";

//依次從num1低位取數

for(

int i = m -

1; i >=

0; i--

)//取值

int x = num1[i]

-'0'

;//和num2相乘

for(

int k = n -

1; k >=

0; k--

)while

(add !=0)

//反轉以符合兩數字串相加的**

reverse

(cur.

begin()

, cur.

end())

; ans =

addstring

(ans, cur);}

return ans;

}//兩數相加

string addstring

(const string& s1,

const string& s2)

reverse

(ans.

begin()

, ans.

end())

;return ans;}}

;

乙個m位的數和乙個n位的數相乘,結果位數肯定是m+n-1或者m+n,因而直接開乙個m+n大小的陣列,儲存相乘中間結果即可。

class

solution

int m = num1.

size()

, n = num2.

size()

; vector<

int>

ans(m + n,0)

;for

(int i = m -

1; i >=

0; i--)}

//處理進製

for(

int i = m + n -

1; i >

0; i--

)//去掉前導零

string ret ="";

int index = ans[0]

==0?1

:0;while

(index < m + n)

return ret;}}

;

43 字串相乘

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

43 字串相乘

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

43 字串相乘

小聲bb,直接int 多好 既然題目要求不能直接用int 我只好開動我的大腦開始想有什麼解決方案。然後首先想到的就是小學時候老師教乘法時用乘式寫法。1 2 3 4 5 6 1 5 4 9 2 5 5 3 51 2 3 4 5 1 51 0 0 5 0 6 1 5 1 20 8 0 4 0 5 5 3...