题目:
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.
class Solution {
public:
string multiply(string num1, string num2) {
if (num1 == "0" || num2 == "0")
return "0";
int len1 = num1.size();
int len2 = num2.size();
vector<int> n1(len1);
vector<int> n2(len2);
vector<int> res(len1+len2, 0);
for (int i = 0; i < len1; i++)
n1[i] = num1[i] - '0';
for (int i = 0; i < len2; i++)
n2[i] = num2[i] - '0';
for (int j = 0; j < len2; j++) {
for (int i = 0; i < len1; i++) {
res[i + j + 1] += n2[j] * n1[i];
}
}
string ans = "";
for (int i = len1 + len2 - 1; i >= 0; i--) {
if (i != 0) {
res[i - 1] += res[i] / 10;
res[i] %= 10;
}
ans = char(res[i] + '0') + ans;
}
ans = ans[0] == '0' ? ans.substr(1, len1+len2-1) : ans;
return ans;
}
};