43 字串相乘

2021-09-09 09:20:25 字數 865 閱讀 6904

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

思路:從後面往前看:

第k位 = 乘數的第1位乘以被乘數的第k位,+乘數的第2位乘以被乘數的第k-1位,+…+,一直到乘數的第k位乘以被乘數的第1位。

其中要注意每一位加上上一位的進製

若位數不夠用0來補

class solution 

std::reverse(num1.begin(), num1.end());//反轉過來方便運算

std::reverse(num2.begin(), num2.end());

int c = 0, n1 = num1.size(), n2 = num2.size();

string s = "";

for (int k = 0; k < n1 + n2 - 1; ++k)

s = char(temp % 10+'0') + s;

c = temp / 10;

}if (c != 0)

return s;

}};

43 字串相乘

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

43 字串相乘

小聲bb,直接int 多好 既然題目要求不能直接用int 我只好開動我的大腦開始想有什麼解決方案。然後首先想到的就是小學時候老師教乘法時用乘式寫法。1 2 3 4 5 6 1 5 4 9 2 5 5 3 51 2 3 4 5 1 51 0 0 5 0 6 1 5 1 20 8 0 4 0 5 5 3...

43 字串相乘

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