字串相乘

2021-09-24 22:54:01 字數 1831 閱讀 5496

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