其实大数乘法就是在考虑大数加法的进位的同时,考虑字符串num1和字符串num2相乘时,每一位所在的位置,以及加法运算中多了一个乘法项。
可运行的cpp代码
class Solution {
public:
string multiply(string num1, string num2) {
string res(num1.size()+num2.size(),'0');
for(int i=num1.size()-1;i>=0;i--)
{
int counter=0;
for(int j=num2.size()-1;j>=0;j--)
{
int temp = res[i+j+1]-'0' + (num1[i]-'0')*(num2[j]-'0')+counter;
res[i+j+1] = temp%10 + '0';
counter = temp/10;
}
res[i] = counter + '0';
}
size_t found = res.find_first_not_of("0");
if(found!=string::npos)
{
return res.substr(found);
}
return "0";
}
};
网友评论