P43 字符串相乘
字符串相乘
这道题,我本来想直接换算成long long 乘出来,但是复杂度有点高并且,感觉会爆longlong ,可能是高精度的题型
我是按照,正常我们计算大数字相乘所用到的竖式,模拟各个进位来计算的,一道高精度的题型

题目不是很难,但是要想的地方比较多。

我当时也想了半天,主要是怎么去除前导0 ,因为我是写java的所以c++的一些库不是很常用。(⊙o⊙) !
class Solution {
public:
string multiply(string num1, string num2) {
int n = num1.size();
int m = num2.size();
if(num1 == "0" || num2 == "0"){
return "0";
}
vector<int> ans(n + m);
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
int a = num1[n-i-1] - '0';
int b = num2[m-j-1] - '0';
ans[i+j] += a * b;
}
}
string s;
for(int i=0 ,carry = 0;i < ans.size();i++){
ans[i] += carry;
carry = ans[i] / 10;
ans[i] %= 10;
char a = ans[i] + '0';
s = a + s;
}
for(int i=0;i<s.size();i++){
if(s[i] != '0'){
s = s.substr(i);
break;
}
}
return s;
}
};