給定兩個以字串形式表示的非負整數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)或直接將輸入轉換為整數來處理。
1.先將每一位相乘的結果相加到各個位,其次在解決進製問題。最後消除從左開始的0(因為可能沒有佔位佔滿)
。然後轉變為字串
2.首先由於可能存在進製所以需要加1,並且每一位是錯位相加
3.從後往前由低位向高位推移,低位除以10來進製,然後取餘賦值給本位
4.排除高位沒有用到的0
5.最後將其轉換為字串,通過和『0』相加
附註:
1.將int數值轉換為字串值,可以將差值加乙個基準值比如『0』或『a』
#include
#include
#include
#include
using
namespace std;
class
myclass
int len1 = num1.
size()
-1;int len2 = num2.
size()
-1;int maxlen = num1.
size()
+ num2.
size()
; string str;
vector<
int>
res(maxlen,0)
;for
(int i = len1; i >=0;
--i)
}for
(int i = maxlen -
1; i >0;
--i)
int i =0;
while
(i < maxlen && res[i]==0
)if(i == maxlen)
for(
; i < res.
size()
;++i)
return str;}}
;void
main()
{ myclass a
; cout
("2"
,"3"
)
("pause"
);
字串相乘
定給兩個以字串形式表示的非負整數 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...