这里直接采用手工乘法算法,两个循环即可解决,复杂度为o(n*m),n,m分别为两个字符串的长度
代码:
string multiply(string num1, string num2) {
string result(num1.length() + num2.length(), '0');
for (int i = num1.length() - 1; i >= 0; --i)
{
int carry = 0;
for (int j = num2.length() - 1; j >= 0; --j)
{
int sum = (result[i + j + 1] - '0') + (num1[i] - '0') * (num2[j] - '0') ;
result[i + j + 1] = sum % 10 + '0';
carry = sum / 10;
result[i + j] += carry;
}
}
int pos = 0;
while (result[pos] == '0')
pos++;
result = result.substr(pos);
if (result == "")
return "0";
return result;
}
通过截图