给定两个以字符串形式表示的非负整数 num1
和 num2
,返回 num1
和 num2
的乘积,它们的乘积也表示为字符串形式。
思路:模拟手算
class Solution {
public:
string multiply(string num1, string num2) {
if(num1[0] == '0' || num2[0] == '0') return "0";
int len1 = num1.size(), len2 = num2.size();
int top = 0;
int mov = 0;
vector<int>result(len1+len2);
int idx;
for(int i = len2 - 1; i>=0; i--, mov++){
top = 0;
for(int j = len1 - 1; j>=0; j--, top++){
idx = top+mov;
result[idx] += ((num1[j] - '0')*(num2[i] - '0'));
result[idx+1] += result[idx]/10;
result[idx] %= 10;
}
}
top = idx+2;
int num = top;
string ans="";
for(int i = top-1; i>=0; i--) if(result[i]) break; else num--;
for(int i = 0; i<num; i++) ans += (result[i]+'0');
reverse(ans.begin(), ans.end());
return ans;
}
};