用字符串模拟两数相乘。
在纸上模拟一下小学时学的算术乘法,就知道怎么做了。
c++
class Solution {
public:
int ans[10005];
string multiply(string num1, string num2) {
if(num1=="0"||num2=="0")
return "0";
int pos=0;
int start=0;
int len=0;
memset(ans,0,sizeof(ans));
for(int i=num2.size()-1;i>=0;i--)
{
int x = num2[i]-'0';
pos=start;
for(int j=num1.size()-1;j>=0;j--)
{
int y = x*(num1[j]-'0');
ans[pos] += y;
int tag=pos;
while(ans[tag]>=10)
{
ans[tag+1]+=ans[tag]/10;
ans[tag]=ans[tag]%10;
tag++;
len=max(len,tag+1);
}
pos++;
len=max(len,pos);
}
start++;
}
string res;
for(int i=len-1;i>=0;i--)
{
res+=ans[i]+'0';
}
return res;
}
};