class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     * 计算两个数之和
     * @param s string字符串 表示第一个整数
     * @param t string字符串 表示第二个整数
     * @return string字符串
     */
    string solve(string s, string t) {
        // write code here

        int m = s.size(), n = t.size();
        if(m==0 || n==0)
        {
            return m==0 ? t : s;
        }

        int i = 0;
        stack<char> sts;
        int carry = 0;
        while(i<max(m, n))
        {
            int ps = m-1-i, pt = n-1 - i;
            int nums, numt;
            
            nums = (ps>=0)? s[ps] - '0' : 0;
            numt = (pt>=0)? t[pt] - '0' : 0;
            
 
            int sum = nums + numt + carry;
            carry = sum>=10 ? 1 : 0;

            int a = sum % 10;
            
            sts.push(a+'0');
            i++;
        }
        if(carry>0)
        {
            sts.push('1');
        }

        // 遍历出栈
        string ans;
        while(!sts.empty())
        {
            ans+= sts.top();
            sts.pop();
        }

        return ans;




    }
};

模拟 字符串 变为数字 每一位的加法 是用了栈 注意最后的进位