字串 leetcode 43 字串相乘

2021-10-17 03:57:44 字數 1538 閱讀 3029

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