前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >655. 大整数加法

655. 大整数加法

作者头像
和蔼的zhxing
发布2018-09-04 13:15:45
5500
发布2018-09-04 13:15:45
举报

以字符串的形式给出两个非负整数 num1 和 num2,返回 num1 和 num2 的和。 注意事项: num1 和 num2 的长度都小于5100。 num1 和 num2 都只包含数字 0-9。 num1 和 num2 都不包含任何前导零。 您不能使用任何内置的BigInteger库内的方法或直接将输入转换为整数。 给定 num1 = "123",num2 = "45" 返回 "168" 思路:受408的启发,写了一个几乎一模一样的,不同的是是十进制的,而单用字符串无法处理十进制的,所以加的数都存入一个vector<Int>中,处理的时候再拿出来: 思路参见408的思路,代码如下,第一次写竟然写了20分钟,有一个小知识,string初始化不能为:

代码语言:javascript
复制
string s(10);   
// 应该是  string s(10,' '); 
//string没有单纯接受一个int的构造函数

code:

代码语言:javascript
复制
 string addStrings(string &num1, string &num2) {
     int size1=num1.size();
     int size2=num2.size();
     if(size1==0||size2==0)
     {
         return string();
     }
     resortString(num1);
     resortString(num2);
     
     vector<int> num;
     int i=0;
     for(i=0;i<size1&&i<size2;i++)
     {
         num.push_back(num1[i]-'0'+num2[i]-'0');   
     }
     for(;i<size1;i++)
     {
         num.push_back(num1[i]-'0');
     }
     for(;i<size2;i++)
     {
         num.push_back(num2[i]-'0');
     }
     //到这里把每一位都加起来放在一个vector<int>中,之所以不直接用字符串是因为
     //想加起来可能大于9,没法用字符串存储
    string res(num.size(),'0');   //开辟这么多的空间字符来存储最后的数字,低位在前
    int temp=0;
    int carry=0;
    for(int i=0;i<num.size();i++)
    {
    
        int temp=num[i]+carry;  //把这位算出来存起来
        if(temp<=9)
        {
            carry=0;   //不用进位
            res[i]='0'+temp;  //当前位就等于这个
        }
        else if(temp>=10)  
        {
            carry=1;
            res[i]='0'+temp%10;
        }
    }
    if(carry==1)  //如果最后一位还有进位
        
        {
            res+='1';
        }
        resortString(res);
        return res;
    }
    
    
    void resortString(string &s)
    {
        for(int i=0;i<s.size()/2;i++)
        {
            swap(s[i],s[s.size()-1-i]);
        }
    }
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017.11.22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档