码迷,mamicode.com
首页 > 其他好文 > 详细

LintCode 655. 大整数加法

时间:2018-01-28 23:23:36      阅读:335      评论:0      收藏:0      [点我收藏+]

标签:长度   span   info   str   tco   处理   返回   code   开始   

以字符串的形式给出两个非负整数 num1 和 num2,返回 num1 和 num2 的和。

 样例

给定 num1 = "123",num2 = "45" 
返回 "168"

 
class Solution {
public:
    /*
     * @param num1: a non-negative integers
     * @param num2: a non-negative integers
     * @return: return sum of num1 and num2
     */
    string addStrings(string &num1, string &num2) {
        // write your code here
        int longLen=max(num1.size(),num2.size());
        int shortLen=min(num1.size(),num2.size());
        string n1=num1.size()==longLen?num1:num2;//长度较长的串
        string n2=num2.size()==shortLen?num2:num1;//长度较短的串
        int diffLen=longLen-shortLen;
        int x=0;//进位
        for(int i=shortLen-1;i>=0;i--)//从两个串的末尾开始运算,运算shortLen位
        {
            n1[i+diffLen]=n1[i+diffLen]+n2[i]+x-0-0;
            x=n1[i+diffLen]/10;//保存进位
            n1[i+diffLen]=n1[i+diffLen]%10+0;
        }
        //剩余的部分与进位处理
        //如189+2,先处理9+2 然后在以下运算处理进位与前面18的加法运算
        for(int j=longLen-shortLen-1;j>=0;j--)
        {
            if(x==0)
                break;
            n1[j]=n1[j]+x-0;
            x=n1[j]/10;//保存进位
            n1[j]=n1[j]%10+0;
        }
        if(x>0)
            return 1+n1;
        else
            return n1;
        
    }
};

 

LintCode 655. 大整数加法

标签:长度   span   info   str   tco   处理   返回   code   开始   

原文地址:https://www.cnblogs.com/zslhg903/p/8372747.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!