思路:模拟普通乘法过程,先用一个vector<int>类型将中间结果保存,然后依次得到每一位的数(通过取模和除法得到)。
code:
class Solution {
public:
string multiply(string num1, string num2) {
int len1 = num1.length(), len2 = num2.length();
vector<int> n1,n2,ret(len1+len2,0);
for(int i = 0;i < len1;i++)
n1.push_back(num1[i] - '0');
for(int i = 0;i < len2;i++)
n2.push_back(num2[i] - '0');
for(int i = len1-1;i >= 0;i--)
for(int j = len2 - 1;j >= 0;j--)
ret[i+j+1] += (n1[i] * n2[j]);
for(int i = len1 + len2 -1;i >= 0;i--){
ret[i-1] += (ret[i] / 10);
ret[i] %= 10;
}
int k = len1 + len2 -1;
for(int i = 0;i < len1 + len2;i++){
if(ret[i] != 0){
k = i;
break;
}
}
string strRet;
for(int i = k;i < len1+len2;i++){
char c = ret[i] + '0';
strRet += c;
}
return strRet;
}
};