隨筆 字串相乘(按位相乘法)

2021-09-10 21:14:22 字數 1103 閱讀 2217

題目:給定兩個以字串形式表示的非負整數 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)或直接將輸入轉換為整數來處理。

思路:這道題不能用乘以進製的位數這種方法去做,因為字串可以足夠長,以至於越出long的範圍。 那麼我們可以採用表中逐位相乘的方法;這裡有乙個小知識點就是乘法的位數是不會超過兩個數的位數和。當兩個數相乘時,其所在陣列角標為兩個角標和加1;對於陣列中每一位,如果元素大於10,那麼就需要向前一位進行進製,還有就是對於陣列最開始,要判斷是否為0;如果為0就進行剔除;

**實現:

class

solution

int[

] res=

newint

[num1.

length()

+num2.

length()

];for(

int i=num1.

length()

-1;i>=

0;i--)}

for(

int i=res.length-

1; i>

0; i--)}

stringbuilder sb=

newstringbuilder()

;boolean b=

false

;for

(int n=

0;n)else

}return sb.

tostring();}}

43 字串相乘 大數相乘(字串相乘)

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

字串相乘

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