我们只需要模拟竖式加法的过程即可,同时逆序遍历两个字符串,记录相同位置上的和,然后将该数加到返回字符串中,接着计算下一个位置。注意在计算过程中要保留进位。且字符串遍历完后还要判断进位是否为0,否则还得加上进位。接着我们返回逆置后的字符串即可。

class Solution
{
public:
    string solve(string s, string t)
    {
        if (!s.size() || !t.size())
            return !s.size() ? t : s;

        int i = s.size() - 1, j = t.size() - 1, carry = 0;
        string ret;
        while (i >= 0 || j >= 0 || carry)
        {
            carry += i < s.size() ? s[i--] - '0' : 0;
            carry += j < t.size() ? t[j--] - '0' : 0;
            ret += to_string(carry % 10);
            carry /= 10;
        }
        reverse(ret.begin(), ret.end());
        return ret;
    }
};