字串相乘 遍歷

2021-10-05 18:49:49 字數 1245 閱讀 1846

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

解題思路:

將字串放入int型別的順序容器tmp中進行計算。

tmp[i+j]=tmp[i+j]+(num1[i]-『0』)*(num2[j]-『0』),輸出的tmp[i]如下圖所示,之後再將tmp[i]的數值求和取餘按照順序放入result容器中,最後在將result容器中的數值push_back到字串中即可。

將tmp[i]數值重新進行計算考慮進製的情況,tmp[i]=tmp[i]+tmp[i+1]/10;之後將餘數放入result[i+1]中:

tmp[3]=63 result[4]=3

tmp[2]=57+63/10=57+6=63 result[3]=3

tmp[1]=39+63/10=39+6=45 result[2]=5

tmp[0]=9+45/10=9+4=13 result[1]=3

判斷tmp[0]是否大於10,若大於10 result[0]=tmp[10]/10=13/10=1

將result放入字串中需要考慮若tmp[0]沒有進製,即result[0]=0的情況:

1.result[0]=0,那就從result[1]開始push_back;

2.result[0]!=0,那就從result[0]開始push_back;

class

solution

}for

(int i=tmp.

size()

-2;i>=

0;i--)if

(result[0]

==0)}

else}}

return s;}}

;

字串相乘

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