题目
Given two non-negative integers num1 and num2 represented as strings, return the product of num1 and num2.
Note:
The length of both num1 and num2 is < 110.
Both num1 and num2 contains only digits 0-9.
Both num1 and num2 does not contain any leading zero.
You must not use any built-in BigInteger library or convert the inputs to integer directly.
思路
从数尾开始计算相乘,同时传递进位。
代码
class Solution {
public:
string multiply(string num1, string num2) {
string result(num1.size() + num2.size(), '0');
for (int i = num1.size() - 1; i >= 0; i--) {
for (int j = num2.size() - 1; j >= 0; j--) {
int ii = num1[i] - '0';
int jj = num2[j] - '0';
int tmp = (result[(i+j+1)] - '0') + ii * jj;
result[i+j+1] = tmp % 10 + '0';
result[i+j] += tmp / 10;
}
}
size_t startpos = result.find_first_not_of("0");
if (string::npos != startpos) {
return result.substr(startpos);
}
return "0";
}
};