题目描述:
给定两个以字符串形式表示的非负整数num1和num2,返回两个数的乘积,它们的乘积也以字符串的形式表示。
说明:
题目解析:
注意本题不能够直接使用strtoint的整型数转换函数。 而且本题就是一个简单的数学乘法的考察,需要对数学知识有较强的理解能力。
本题我们采用优化竖式计算的方式来求解,具体参考优化竖式
具体的代码参考如下:
class Solution{
public:
string multiply(string num1, string num2){
int len1 = num1.size(), len2=num2.size();
string res(len1+len2,'0'); //用来保存乘法结果
for(int i=len2-1;i>=0;i--)
{
for(int j=len1-1;j>=0;j--)//注意都是从最高位进行计算求解的
{
int tmp=(res[i+j+1]-'0')+(num1[j]-'0')*(num2[i]-'0');
res[i+j+1] = tmp%10+'0';
res[i+j] += tmp/10;
}
}
for(int i=0;i<len1+len2;i++){
if(res[i]!='0')
{
return res.substr(i); //表示剪切剩余字符串的长度(从i这个位置以后开始)
}
}
return "0";
}
};