class Solution {
public:
string multiply(string num1, string num2) {
if (num1 == "0" || num2 == "0")
return "0";
int len1 = num1.length(), len2 = num2.length();
int ans[len1 + len2];
for (int i = 0; i < len1 + len2; i++) {
ans[i] = 0;
}
for (int i = 0; i < len1; i++) {
for (int j = 0; j < len2; j++) {
ans[i + j] += (num1[len1 - 1 - i] - '0') *
(num2[len2 - 1 - j] - '0');
}
}
for (int i = 0; i < len1 + len2 - 1; i++) {
ans[i + 1] += ans[i] / 10;
ans[i] %= 10;
}
string ret = "";
bool flag = false;
for (int i = len1 + len2 - 1; i >= 0; i--) {
if (flag) {
ret += (char)('0' + ans[i]);
} else if (ans[i] != 0) {
flag = true;
ret += (char)('0' + ans[i]);
}
}
return ret;
}
};