字符串的各位对齐,不足的位以0代替,从末位开始相加,如果大于等于10则产生进位,保存进了多少位,下次加的时候也需要把进位标志加上

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     * 计算两个数之和
     * @param s string字符串 表示第一个整数
     * @param t string字符串 表示第二个整数
     * @return string字符串
     */
    string solve(string s, string t) {
        // write code here
        //字符串从末尾相加,大于10就进位,用变量保存进位的情况

        reverse(s.begin(),s.end());
        reverse(t.begin(),t.end());

        int index = max(s.length(),t.length());
        string ret = "";
        int flag = 0;
        //遍历字符串进行相加;
        for(int i=0; i<index; i++)
        {
            //10
            uint8_t num1 = 0;
            if(s.length() > i)
            {
                num1 = s.at(i) - '0';
            }
            //99
            uint8_t num2 = 0;
            if(t.length() > i)
            {
                num2  = t.at(i) - '0';
            }

            uint8_t total = num1 + num2 + flag;
            //本次相加的总和,如果大于10则产生进位,否则需要重置进位标志为0
            if(total >= 10)
            {
                flag = total / 10;
                total = total % 10;
            }
            else
            {
                flag = 0;
            }

            ret.push_back(total+'0');
        }

        //加完以后判断最终是否有进位
        if(flag > 0)
            ret.push_back(flag+'0');
        reverse(ret.begin(), ret.end());
        return ret;
    }
};