力扣oj-字串相乘
字串相乘
給定兩個以字串形式表示的非負整數 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)或直接將輸入轉換為整數來處理。
來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/multiply-strings
主要解題思路
1.把兩個數字都存在陣列裡 (vector, 在這裡我是從num的最後一位開始,
把每一位尾插到陣列裡,也就是發生了一下逆序,方便後續操作
2.每一位相乘的結果也存在陣列裡 : c[i+j]+=a[i]*b[j]。這裡用加號是因為有多種情況都會對映到 i + j 位上。
3.最後在處理進位 從低位開始處理 ,一直往高位進 c[i + 1] = c[i] / 10, c[i] %= 10
4.使用 res=ch+res;這樣每次得到的一個字元相當於直接頭插了。
一個整理樣例
程式碼如下
class Solution {
public:
string multiply(string num1, string num2) {
string res;
if(num1=="0"||num2=="0")
{
return res="0";
}
vector<int> a,b,c;
int i;
c.resize(num1.size()+num2.size()-1);
for(i=num1.size()-1;i>=0;i--)a.push_back(num1[i]-'0');
for(i=num2.size()-1;i>=0;i--)b.push_back(num2[i]-'0');
for(i=0;i<a.size();i++)
{
for(int j=0;j<b.size();j++)
{
c[i+j]+=a[i]*b[j];
}
}
int k=0;
for(i=0;i<c.size();i++)
{
k+=c[i];
char ch=k%10+'0';
res=ch+res;
k/=10;
}
while(k)
{
char ch=k%10+'0';
res=ch+res;
k/=10;
}
return res;
}
};
相關文章
- 力扣#43 字串相乘(C++)力扣字串C++
- 【每週例題】力扣 C++ 字串相乘力扣C++字串
- 字串相乘字串
- 力扣刷題-滑動視窗(字串)力扣字串
- 字串相乘——求字串的乘積字串
- 力扣之反轉字串中的單詞 III力扣字串
- leetcode:字串相乘(java)LeetCode字串Java
- LeetCode-043-字串相乘LeetCode字串
- 我的力扣演算法1370-上升下降字串力扣演算法字串
- 力扣 - 劍指 Offer 67. 把字串轉換成整數力扣字串
- 力扣2589 5.16力扣
- 力扣(LeetCode)863力扣LeetCode
- 力扣(LeetCode)389力扣LeetCode
- 力扣(LeetCode)796力扣LeetCode
- 力扣(LeetCode)934力扣LeetCode
- 力扣(LeetCode)543力扣LeetCode
- 力扣(LeetCode)513力扣LeetCode
- 力扣(LeetCode)965力扣LeetCode
- 力扣27. 移除元素力扣
- 力扣之按身高排序力扣排序
- 教你如何玩轉力扣力扣
- 力扣之反轉字串之原地修改輸入陣列(雙指標方式)力扣字串陣列指標
- 力扣(LeetCode)103力扣LeetCode
- 力扣(LeetCode)130力扣LeetCode
- 力扣——朋友圈思路分析力扣
- 力扣之存在重複元素力扣
- 力扣-283. 移動零力扣
- 力扣-54. 螺旋矩陣力扣矩陣
- 力扣 22. 括號生成力扣
- 力扣題解-387. 字串中的第一個唯一字元力扣字串字元
- 力扣(LeetCode)310力扣LeetCode
- 力扣--連結串列演算法力扣演算法
- 力扣之二分查詢力扣
- 力扣2713 2024.6.19力扣
- 力扣-376. 擺動序列力扣
- 力扣-697. 陣列的度力扣陣列
- 力扣練習-動態規劃力扣動態規劃
- 力扣-動態規劃全解力扣動態規劃