思路分析:
由于题目要求,不得使用直接将输入转换为整数进行计算,我们可以利用模拟乘法的竖式计算来完成字符串的相乘。
借用LeetCode上的动图模拟:
代码实现:
class Solution
{
public:
string multiply(string num1, string num2)
{
int n1=num1.size();
int n2=num2.size();
string res(n1+n2,'0');
if(num1=="0"||num2=="0")
return "0";
for(int i=n2-1;i>=0;i--)
{
for(int j=n1-1;j>=0;j--)
{
int ans=(num1[j]-'0')*(num2[i]-'0')+(res[i+j+1]-'0');
res[i+j+1]=ans%10+'0';
res[i+j]+=ans/10;
}
}
if(res[0]=='0')
res=res.erase(0,1);
return res;
}
};
运行结果(c++):