給定兩個以字串形式表示的非負整數 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)或直接將輸入轉換為整數來處理。
大佬解答鏈結
8/我自己寫的報錯把心態報崩了,但我知道了再函式中需要返回乙個字串時候,用動態記憶體去申請,這樣就不會導致被作業系統自動釋放,還有我自己做的是先把num1 num2轉換成整數,然後相乘,但是沒考慮到這樣乘的結果會非常大,導致超過範圍.因為這裡的字元可以有109位,還是豎式相乘法管用.
#include
#include
char
*multiply
(char
* num1,
char
* num2)
;int
main
(void
)char
*multiply
(char
* num1,
char
* num2)
// num2轉換成整數
for(i=
0;i)//相乘的結果
total=n1*n2;
// 開始轉換成字串
while
(total!=0)
str[count]
='\0';if
(count==1)
return str;
// 交換位置,因為2*7 程式會輸出41
for(j =
0; j <
(count/2)
; j++
)return str;
}
LeetCode43 字串相乘
給定兩個以字串形式表示的非負整數num1和num2,返回num1和num2的乘積,它們的乘積也表示為字串形式。示例 1 輸入 num1 2 num2 3 輸出 6 示例 2 輸入 num1 123 num2 456 輸出 56088 題目分析 如果兩個字串中有乙個為0,則結果是0 否則的話,將其中乙...
LeetCode43字串相乘
給定兩個以字串形式表示的非負整數num1和num2,返回num1和num2的乘積,它們的乘積也表示為字串形式。示例 1 輸入 num1 2 num2 3 輸出 6 示例 2 輸入 num1 123 num2 456 輸出 56088 說明 num1和num2的長度小於110。num1和num2只包含...
leetcode43 字串相乘
給定兩個以字串形式表示的非負整數 num1 和 num2,返回 num1 和 num2 的乘積,它們的乘積也表示為字串形式。示例 1 輸入 num1 2 num2 3 輸出 6 示例 2 輸入 num1 123 num2 456 輸出 56088 說明 num1 和 num2 的長度小於110。nu...