input:
string s1("12");
string s2("12");
output:
"144";
class Solution {
public:
string multiply(string num1, string num2) {
if(num1.size()==1&&num1[0]=='0'||num2.size()==1&&num2[0]=='0')return "0";//边界条件
int num1_sz=num1.size(),num2_sz=num2.size();
vector<int>rec(num1_sz+num2_sz,0); //init
reverse(num1.begin(),num1.end());
reverse(num2.begin(),num2.end()); //个位在前
for(int i=0;i<num1_sz+num2_sz-1;++i){
int temp=0;
for(int j=0;j<num1.size()&&j<=i;++j){
if(i-j<num2_sz){
temp+=(num1[j]-'0')*(num2[i-j]-'0'); //字符串中的字符转数字
}
}
int tmp=temp+rec[i];
rec[i]=tmp%10;
rec[i+1]+=tmp/10; //进位
}
if(rec.back()==0)rec.erase(rec.end()-1); //去高位0
reverse(rec.begin(),rec.end());
// string s(rec.size(),'0');
// for(int m=0;m<rec.size();++m){
// s[m]+=rec[m];
// }
string s; //字符数组转字符串的两种写法
for(auto i:rec)s.push_back(i);
for(auto &ss:s)ss+='0';
return s;
}
};
你