题解 | #大数加法#
大数加法
http://www.nowcoder.com/practice/11ae12e8c6fe48f883cad618c2e81475
维护一个进位和一个当前位,从后往前迭代就行。注意补0.
class Solution { public: string solve(string s, string t) { int slen = s.size(), tlen = t.size(); stack<char> stks, stkt, stk; int len = max(slen, tlen); if(slen > tlen) for(int i = 0; i < slen - tlen; i++) stkt.push('0'); else for(int i = 0; i < tlen - slen; i++) stks.push('0'); for(int i = 0; i < slen; i++) stks.push(s[i]); for(int i = 0; i < tlen; i++) stkt.push(t[i]); int keta = 0, bit = 0; for(int i = 0; i < len; i++) { int temp = stks.top() - '0' + stkt.top() - '0' + keta; stks.pop(), stkt.pop(); bit = temp % 10; keta = temp / 10; stk.push('0' + bit); } if(keta == 1) stk.push('1'); string ans = ""; while(!stk.empty()) ans += stk.top(), stk.pop(); return ans; } };