问题:
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.size() < num2.size())
return multiply(num2, num1);
string result (num1.size() + num2.size(), '0');
for (int i = num2.size() - 1; i >= 0; i --) {
int offSet = num2.size() - i;
int pos = result.size() - offSet;
int carry = 0;
for (int j = num1.size() - 1; j >= 0; j --) {
int temp = (result[pos] - '0') + (num2[i] - '0') * (num1[j] - '0') + carry;
result[pos] = '0' + (temp % 10);
carry = temp / 10;
pos --;
}
if (carry != 0) result[pos] = carry + '0';
}
int index = 0;
while (index < result.size() && result[index] == '0')
index ++;
if (index == result.size())
return "0";
else
return result.substr(index);
}
};