每次看到模拟题目就想睡觉

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     * 
     * @param s string字符串 第一个整数
     * @param t string字符串 第二个整数
     * @return string字符串
     */
    string solve(string s, string t) {
      if (s == "0" || t == "0") {
        return "0";
      }
      
      //  最高位有进位则长度等于两者之和,不然长度减一,这里存放中间结果,不需要考虑最高位进位
      std::vector<int> tmp(s.size() + t.size() - 1, 0);
      
      for (int i = s.size() - 1; i >= 0; --i) {
        for (int j = t.size() - 1; j >= 0; --j) {
          //  对应位相乘结果的累加和
          tmp[i + j] += (s[i] - '0') * (t[j] - '0');
        }
      }
      
      int carry = 0;
      std::string res;
      
      for (int i = tmp.size() - 1; i >= 0; --i) {
        int num = tmp[i] + carry;
        res.push_back('0' + (num % 10));
        carry = num / 10;
      }
      
      if (carry) {
        res.push_back('0' + carry);
      }
      
      std::reverse(res.begin(), res.end());
      
      return res;
    }
};