給定兩個以字串形式表示的非負整數 num1 和 num2,返回 num1 和 num2 的乘積,它們的乘積也表示為字串形式。
示例 1:
輸入: num1 = 「2」, num2 = 「3」
輸出: 「6」
**:
class
solution
string ret;
ret.
reserve
(len2 +2)
; int step =0;
int j = len2 -1;
for(int i = len1 -
1; j >=
0; i--
, j--
)else
sum =
(num2[j]
-'0'
)+ step;
step =0;
if(sum >9)
ret.
push_back
(sum +
'0');}
if(step !=0)
reverse
(ret.
begin()
, ret.
end())
;return ret;
}public
: string multiply
(string num1, string num2)
if(len1 < len2)
int j = len1 -1;
int step =0;
string* ret=
newstring
[len2+1]
;for
(int i =
0; i < len2; i++
)for
(int i =
0; i < len2; i++
)//2
ret[i]
.push_back
(sum +
'0');}
if(step !=0)
reverse
(ret[i]
.begin()
, ret[i]
.end()
);int count = len2 -1;
while
(count - i)
//3 j = len1 -1;
} add =
addstrings
(ret[0]
, ret[1]
);//4for
(int i=
2;i) add=
addstrings
(add, ret[i]);
delete
ret;
return add;}}
;
雖然方法很爛,但是還是做出來了哈哈哈。
要注意的幾點:
1.要注意兩個數相乘,其中乙個可能是0,如果沒有特別處理,就會輸出結果為多個0,比如
,999 * 0=000;不會通過;
2.用兩個數中長度短的作為乘數,比如,123 * 45,用45做乘數,用123分別去乘乘數的每一位,得到的結果分別儲存下來;
3.乘數有多少個長度,就給第乙個結果添長度-1個0,第二個添長度-2個0;以此類推;
比如 123 * 45;
結果儲存在ret[0]=「4920」,ret[1]=「615」,把結果相加就好;
4.申請len2+1個長度,避免出現2*3這種情況,如果申請len2個長度結果空間去儲存,
這裡只有乙個結果空間ret[0],ret[1]就不存在,使用add = addstrings(ret[0], ret[1]);就會出錯;
字串相乘
定給兩個以字串形式表示的非負整數 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...