大整数乘法
注意使用额外的空间会超时。
class Solution {
public:
string multiply(string num1, string num2)
{
reverse(num1.begin(),num1.end());
reverse(num2.begin(),num2.end());
int l1=num1.size();
int l2=num2.size();
string v(l1+l2,'0');
int s;
int multi;
int carry;
for(int i=0;i<l1;i++)
{
s=num1[i]-'0';
carry=0;
for(int j=0;j<l2;j++)
{
multi=s*(num2[j]-'0')+(v[i+j]-'0')+carry;
carry=multi/10;
v[i+j]=multi%10+'0';
}
v[i+l2]=carry+'0';
}
int i=v.size()-1;
while(v[i]=='0'&&i>0)i--;
v=v.substr(0,i+1);
reverse(v.begin(),v.end());
return v;
}
};