Multiply Strings
Given two numbers represented as strings, return multiplication of the numbers as a string.
Note: The numbers can be arbitrarily large and are non-negative.
思路:
给定两个字符串的数字,进行相乘,然后输出结果。
这个题目其实就按照乘法的法则一个个数进行相乘,然后累积到res中。由于string的加法还是比较麻烦的,因此先用vector存储临时的结果。
class Solution {
public:
string multiply(string num1, string num2) {
if(num1=="0"||num2=="0") return "0";
string res;
int la=num1.length()-1;
int lb=num2.length()-1;
vector<int> tpres(la+lb+2,0);
int start=la+lb+1;
for(int i=lb;i>=0;i--)
{
int beg=start;
int cur=0;
for(int j=la;j>=0;j--)
{
int tempmul=(int)(num1[j]-'0')*(int)(num2[i]-'0')+cur;
tpres[beg]+=tempmul;
cur=tpres[beg]/10;
tpres[beg]=tpres[beg]%10;
beg--;
}
if(cur!=0)
{
tpres[beg]=cur;
}
start--;//被乘数第二位和乘数相乘的时候,此时获得的数实际上有个10倍的关系
}
if(tpres[0]!=0)
{
res.push_back('0'+tpres[0]);
}
for(int i=1;i<tpres.size();i++)
{
res.push_back('0'+tpres[i]);
}
return res;
}
};