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.
代码如下:
class Solution {
public:
string multiply(string num1, string num2) {
int m=num1.size();
int n=num2.size();
vector<int> res(m+n,0);
for(int j=n-1;j>=0;j--)//num2
{
for(int i=m-1;i>=0;i--)//num1
{
res[i+j+1]+=(num1[i]-'0')*(num2[j]-'0');
}
}
int carry=0;
for(int i=res.size()-1;i>=0;i--)
{
res[i]+=carry;
carry=res[i]/10;
res[i]%=10;
}
//去掉最前便的若干个0
int i=0;
for(;i<res.size()-1;i++)//这是减一
{
if(res[i]!=0)
break;
}
string qq="";
for(int j=i;j<res.size();j++)
qq+=to_string(res[j]);
return qq;
}
};