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