目录
题目描述
思路:
一开始我想要使用atoi()和to_string()两个函数(分别来自cstdlib和sstream库),但是最后的结果超过了 long的限制.所以我就没法了,想着,硬着头皮模拟一遍好了.
普通竖式
思路比较简单,我们写两个函数.一个函数负责返回两个string相加的结果,另一个函数负责模拟每一行相乘的结果.先算出相乘的结果,再拿结果和之前算出的res进行字符串相加函数操作.中间有一些细节问题要注意:
1)每一次保存一行数据的ans字符串,这个字符串每一次要在头部加上有规律个数的字符'0'来模拟手动乘法中的移位计算.
2)我们在进行add(res,ans)之前.需要先将ans字符串进行reverse操作!
class Solution {
public:
string multiply(string num1, string num2) {
if (num1[0] == '0' || num2[0] == '0') return "0";
int i = num2.size() - 1;
int sub = num2.size() - 1;
int j = num1.size() - 1;
int temp_i;
int temp_j;
int mul = 0;
string ans = "";
string res = "";
for (; i >= 0; --i) {
temp_i = i;
temp_j = j;
ans.clear();
while (sub - temp_i > 0) {
ans.push_back('0');
temp_i++;
}
/*num1*num2