class Solution { public: string solve(string s, string t) { vector<int> vs; vector<int> vt; //把字符串整体转换成数组处理 //字符串转数字stoi;字符转数字int(c - '0') //数字转字符串to_string();数字转字符char(c + '0'); for(int i=s.size()-1; i>=0; i--){ vs.push_back(s[i] - '0'); } for(int i=t.size()-1; i>=0;i--){ vt.push_back(t[i] - '0'); //数字字符和数字本身不对应,直接转换会按照asc码转换,char类型转换成int } vector<int> ans(s.size()+t.size()); //开辟空间 for(int i=0; i<vs.size(); i++){ //和手动乘法一样的,先都乘,最后相加的时候处理进位 for(int j=0; j<vt.size(); j++){ int res = vs[i] * vt[j]; ans[i+j] += res; } } int jin = 0; for(int i=0; i<ans.size(); i++){ //处理进位,注意覆盖问题 int temp = ans[i]+jin; ans[i] = temp%10; jin = temp/10; } if(jin)ans.push_back(jin); while(ans.back() == 0 && ans.size()>1){ //处理前导0,最少有一位数 ans.pop_back(); } string j; for(int i=ans.size()-1; i>=0; i--){ j+= (ans[i] + '0'); //转变方向 } return j; } };