leetcode 43 字符串相乘 / MULTIPLY STRINGS
程序员文章站
2022-05-12 09:17:38
...
题目描述:
大数相乘,解题思路有点像多项式相乘,传送门:点击打开链接 这篇博客写得比较清晰,具体代码如下:
class Solution {
public:
string multiply(string num1, string num2) {
int n1 = num1.size(), n2 = num2.size();
vector<int> tmp(n1+n2, 0);
int p = n1 + n2 - 2; // 至少需处理 n1 + n2 - 1位
for(int i = 0;i < n1;i++){
for(int j = 0;j < n2;j++){
tmp[p - i - j] += (num1[i] - '0') * (num2[j] - '0');
}
}
int carry = 0;
for(int i = 0 ; i < n1 + n2 ;i ++){
tmp[i] += carry;
carry = tmp[i] / 10;
tmp[i] %= 10;
}
int i = p + 1;
while(tmp[i] == 0) i--; // 把多余的0去掉
if(i < 0) return "0";
string res;
for(;i >= 0 ;i--){
res.push_back(tmp[i] + '0');
}
return res;
}
};
眼拙的我把一个地方 i 写成了 j 改了一个多小时才看到问题出在哪,我是真的气。