维护一个进位和一个当前位,从后往前迭代就行。注意补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;
}
};


京公网安备 11010502036488号