题解 | #大数加法#

大数加法

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;
    }
};
全部评论

相关推荐

牛客969571862号:昨天捞我今天面这个,岗位一模一样,感觉就是面着玩
点赞 评论 收藏
分享
评论
1
1
分享
牛客网
牛客企业服务