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