#include <algorithm> #include <iterator> #include <ostream> #include <string> class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * 计算两个数之和 * @param s string字符串 表示第一个整数 * @param t string字符串 表示第二个整数 * @return string字符串 */ string solve(string s, string t) { // write code here int carry = 0; string res; auto s_it = s.rbegin(); auto t_it = t.rbegin(); res.resize(max(s.size(), t.size())); auto res_it = res.rbegin(); while (s_it != s.rend() && t_it != t.rend()) { int sum = *s_it - '0' + *t_it - '0' + carry; *res_it = (char)((sum % 10) + '0'); carry = sum >= 10 ? 1 : 0; s_it++; t_it++; res_it++; } auto new_it = s_it == s.rend() ? t_it : s_it; auto new_end = s_it == s.rend() ? t.rend() : s.rend(); while (new_it != new_end) { int sum = *new_it - '0' + carry; *res_it = (char)((sum % 10) + '0'); carry = sum >= 10 ? 1 : 0; res_it++; new_it++; } if (carry) { res.insert(0, "1"); } return res; } };