#include <algorithm> #include <vector> class Solution { public: string solve(string s, string t) { //首先逆序存储数字 int slen = s.size(); int tlen = t.size(); if(s == "0" || t == "0") return "0"; //int m = slen > tlen ? slen : tlen; vector<int> nums1(slen, 0); vector<int> nums2(tlen, 0); for(int i = 0; i < slen; i ++)nums1[slen - 1 - i] = (s[i] - '0'); for(int i = 0; i < tlen; i++)nums2[tlen - 1 - i] = (t[i] - '0'); for(int i = 0; i < tlen; i++) cout<<nums2[i]; cout<<endl; vector<int> ans(slen + tlen, 0); for(int i = 0; i < slen; i ++){ for(int j = 0; j < tlen; j++){ ans[i + j] += (nums1[i] * nums2[j]); } } for(int i = 0; i < slen + tlen; i++){ ans[i + 1] += ans[i] / 10; ans[i] %= 10; } string res; for(int i = 0; i < slen + tlen; i++) res += (ans[i] + '0'); reverse(res.begin(), res.end()); int k = 0; while(res[k] == '0') k ++; return res.substr(k, res.size()); //这里可以知道reverse这个函数是整个逆转,所以ans中后面为零的元素全在res的字符串前方 } };