LeetCode 字串相乘

2022-06-24 08:18:11 字數 1142 閱讀 6551

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

a:1.暴力模擬豎式

public string multiply(string num1, string num2) 

return res.tostring();

}private stringbuilder numadd(stringbuilder res, stringbuilder curr)

while (i >= 0)

while (j >= 0)

if (decade != 0)

return result;

}private stringbuilder compute(int currnum, string num2)

if (decade != 0)

return res;

}

優化豎式

該演算法是通過兩數相乘時,乘數某位與被乘數某位相乘,與產生結果的位置的規律來完成。具體規律如下:

結合下圖更容易理解

leetcode 字串相乘

題目 給定兩個以字串形式表示的非負整數num1和num2,返回num1和num2的乘積,它們的乘積也表示為字串形式。輸入 num1 2 num2 3 輸出 6 輸入 num1 123 num2 456 輸出 56088 這一題的思路其實就是做一次兩數相乘的,從個位開始,相乘如果大於10,則進1,把這...

LeetCode 字串 字串相乘

給定兩個以字串形式表示的非負整數 num1 和 num2,返回 num1 和 num2 的乘積,它們的乘積也表示為字串形式。示例 輸入 num1 2 num2 3 輸出 6 輸入 num1 123 num2 456 輸出 56088 做這題之前可以先做一下字串相加。模擬人做乘法,兩個數相乘,首先將第...

LeetCode演算法 字串相乘

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