题解 | #大数加法#

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刷题整合 文章被收录于专栏

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

全部评论

相关推荐

码农索隆:传音老登来也。 但是这个我不知道怎么回答,不仅仅传音吧,很多公司在候选人不第一时间接受offer或主动将报道时间延期时,都会再从池子里面捞人,直到l捞到满足公司所有要求的人。
秋招的第一个offer,...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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