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