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; } };
模拟 字符串 变为数字 每一位的加法 是用了栈 注意最后的进位