add string

来源:互联网 发布:数控车床编程实例简单 编辑:程序博客网 时间:2024/06/05 12:43

问题描述:
Given two non-negative integers num1 and num2 represented as string, return the sum of num1 and num2.

Note:

The length of both num1 and num2 is < 5100.
Both num1 and num2 contains only digits 0-9.
Both num1 and num2 does not contain any leading zero.
You must not use any built-in BigInteger library or convert the inputs to integer directly.

//时间复杂度o(n)
//从后向前遍历,两个对应字符相加,flag表示进位情况,与下一次相加一起处理
//注:1.对于位数不一样的情况采取分别处理的方式;
// 2.最后一次的进位要考虑
// 3.插入时应直接插到第0号元素的位置

string addStrings(string num1, string num2)     {        int sum = 0;        int flag = 0;        int i,j;        string res;        string r;        for(i = num1.size()-1,j = num2.size()-1; i >=0 && j >=0; i--,j--)        {            sum = num1[i]-'0'+num2[j]-'0'+flag;            flag = sum/10;            r = sum%10+'0';            res.insert(0,r);        }        for(;i>=0;i--)        {           sum = num1[i]-'0'+flag;            flag = sum/10;            r = sum%10+'0';            res.insert(0,r);         }        for(;j>=0;j--)        {            sum = +num2[j]-'0'+flag;            flag = sum/10;            r = sum%10+'0';            res.insert(0,r);        }        if(flag == 1)        {            res.insert(0,"1");        }        return res;    }
原创粉丝点击