Given two numbers represented as strings, return multiplication of the numbers as a string.
Note: The numbers can be arbitrarily large and are non-negative.
The length of result is between len1*len2 -1 to len1 * len2. SO
class Solution {
public:
string multiply(string num1, string num2) {
int len1 = num1.length(), len2 = num2.length(), len = len1 + len2, i, j;
if (num1 == "0" || num2 == "0")
return "0";
vector<int> res(len,0);
string resstr = "";
for (i = len1 - 1; i >= 0; --i)
for (j = len2 - 1; j >= 0; --j)
res[i + j + 1] += (num1[i]-'0')*(num2[j]-'0');
for (i = len1 + len2 -1; i >= 1; --i) {
res[i - 1] += res[i]/10;
res[i] = res[i]%10;
}
for (i = res[0] == 0 ? 1 : 0; i < res.size(); ++i)
resstr.push_back(res[i]+'0');
return resstr;
}
};