题解 | #大数加法#

大数加法

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

相关推荐

10-05 23:02
东北大学 Java
我说句实话啊:那时候看三个月培训班视频,随便做个项目背点八股,都能说3 40w是侮辱价
点赞 评论 收藏
分享
11-01 20:03
已编辑
门头沟学院 算法工程师
Amazarashi66:这种也是幸存者偏差了,拿不到这个价的才是大多数
点赞 评论 收藏
分享
评论
1
1
分享
牛客网
牛客企业服务