题解 | #大数加法#
大数加法
http://www.nowcoder.com/practice/11ae12e8c6fe48f883cad618c2e81475
大树加法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; } };