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...