大树加法C++实现
利用栈的特性来解决(string也可以,但是string 的insert效率不高)
从两个数的尾部一个一个处理,知道两个数字都被处理完成。
坑点:处理完所有数字只有需要判断是否依旧存在进位,有进位则首部加1
class Solution {
public:
string solve(string s, string t) {
int tt=t.size()-1,ss=s.size()-1;
stack<char> sta;
int step=0;
string ans;
while(tt>=0||ss>=0)
{
int temp=0;
if(ss>=0) temp+=s[ss--]-'0';
if(tt>=0) temp+=t[tt--]-'0';
temp+=step;
if(temp>9) //进位
step=1;
else
step=0;
temp%=10;
sta.push(temp+'0');
}
if(step==1) //处理完所有数字要考虑一下是否依旧存在进位 例如99+1
sta.push(step+'0');
while(!sta.empty())
{
ans+=sta.top();
sta.pop();
}
return ans;
}
};
京公网安备 11010502036488号