Leecode 43
思路:三个数组,从右往左相加,最后处理最高位有进位情况。
代码:
std::string Leecode43_multiply(std::string num1, std::string num2) {
std::string ans;
std::vector<int> a, b, c;
c.resize(num1.size() + num2.size() - 1);
for (int i = num1.size() - 1; i >= 0; i--) a.push_back(num1[i] - '0');
for (int i = num2.size() - 1; i >= 0; i--) b.push_back(num2[i] - '0');
for (int i = 0; i < a.size(); i++)
for (int j = 0; j < b.size(); j++)
c[i + j] += a[i] * b[j];
int k = 0;
for (int i = 0; i < c.size(); i++) {
k += c[i];
char c = k % 10 + '0';
ans += c;
k /= 10;
}
while (k) {
char c = k % 10 + '0';
ans += c;
k /= 10;
}
while (ans.size() > 1 && ans[0] == '0') ans.erase(ans.begin());
return ans;
}