Giventwo non-negative integers num1 and num2 representedas strings, return the product of num1 and num2.
Note:
1. The length of both num1 and num2 is< 110.
2. Both num1 and num2 containsonly digits 0-9.
3. Both num1 and num2 doesnot contain any leading zero.
4. You must not use any built-in BigInteger library or convertthe inputs to integer directly.
大数相乘算法经常遇到的题吧,按照用笔做乘法的顺序去做大数相乘就好了,就是处理起来比较麻烦,也只是麻烦而已
class Solution {
public:
string multiply(string num1, string num2) {
if (num1 == "0" || num2 == "0") return "0";
int n1 = num1.size();
int n2 = num2.size();
string result(n1+n2, '0');
int tmp = 0; int l;
for (int i = n1 - 1; i >= 0; i--)
{
for (int j = n2 - 1; j >= 0; j--)
{
tmp += ((num2[j] - '0')*(num1[i] - '0'));
l = n1 - 1 - i + n2 - 1 - j;
int u = (result[l]-'0') + tmp % 10;
result[l] = (char)(u % 10+'0');
tmp /= 10;
tmp += u / 10;
}
l = n1 - 1 - i + n2;
while (tmp != 0)
{
int u = (result[l]-'0') + (tmp % 10);
result[l] = (char)(u % 10+'0');
tmp /= 10;
tmp += u / 10;
l++;
}
tmp = 0;
}
result = result.substr(0, l);
reverse(result.begin(), result.end());
return result;
}
};