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) {
std::string result;
std::vector<int> data;
int total = num1.size() + num2.size() + 1;
data.resize(total, 0);
for (std::size_t i=0; i<num1.size(); i++) {
for (std::size_t j=0; j<num2.size(); j++) {
data[i+j+1] += (num1[i]-'0') * (num2[j]-'0');
}
}
for (int i=num1.size()+num2.size()-1; i>=0; i--) {
if (data[i] >= 10) {
data[i-1] += data[i] / 10;
data[i] %= 10;
}
result.insert(result.begin(), data[i] + '0');
}
while (result.size() > 1 && result[0] == '0') {
result = result.erase(0, 1);
}
return result;
}
};