题解 | #大数加法#

Problem: 大数加法

思路

1.将需要处理的字符串翻转

2.但转后的字符串,从个位开始加

3.如果相加大于10,就将和的各位保存起来,十位上的数给carry

4.继续循环

5.循环结束后,将carry的数放到最后一个位置上,然后翻转答案的字符串;

解题方法

1.解决方法:一次遍历,时间复杂度:O(N)O(N),空间复杂度为 O(1)O(1)

Code

class Solution {
public:
    string solve(string s, string t) {
        reverse(s.begin(),s.end());//翻转字符串,方便相加
        reverse(t.begin(),t.end());

        int n=s.size()>t.size()?s.size():t.size();//长的字符串作为限制
        int carry=0;
        string ans;
        for(int i=0;i<n;++i)
        {
            carry+=i<s.size()?s[i]-'0':0;
            carry+=i<t.size()?t[i]-'0':0;//叠加
            ans.push_back(carry%10+'0');
            carry/=10;//叠加后记得减少
        }
        if(carry)
        {
            ans.push_back('1');//如果最后还是多了,进一位
        }
        reverse(ans.begin(),ans.end());
        return ans;
    }
};
Leetcode刷题整合 文章被收录于专栏

都是作者刷到的一些感觉是好题整理到一起的,辛苦整理不易,麻烦给个赞,有疑问请留言

全部评论

相关推荐

05-12 11:09
已编辑
门头沟学院 后端
已注销:没必要放这么多专业技能的描述。这些应该是默认已会的,写这么多行感觉在凑内容。项目这块感觉再包装包装吧,换个名字,虽然大家的项目基本都是网上套壳的,但是你这也太明显了。放一个业务项目,再放一个技术项目。技术项目,例如中间件的一些扩展和尝试。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务