维护一个进位和一个当前位,从后往前迭代就行。注意补0.

class Solution {
public:
    string solve(string s, string t) {
        int slen = s.size(), tlen = t.size();
        stack<char> stks, stkt, stk;
        int len = max(slen, tlen);
        if(slen > tlen)
            for(int i = 0; i < slen - tlen; i++)
                stkt.push('0');
        else
            for(int i = 0; i < tlen - slen; i++)
                stks.push('0');
        for(int i = 0; i < slen; i++)
            stks.push(s[i]);
        for(int i = 0; i < tlen; i++)
            stkt.push(t[i]);
        int keta = 0, bit = 0;
        for(int i = 0; i < len; i++)
        {
            int temp = stks.top() - '0' + stkt.top() - '0' + keta;
            stks.pop(), stkt.pop();
            bit = temp % 10;
            keta = temp / 10;
            stk.push('0' + bit);
        }
        if(keta == 1) stk.push('1');
        string ans = "";
        while(!stk.empty())
            ans += stk.top(), stk.pop();
        return ans;
    }
};