大数相加

题目很简单,就是实现两个很大整数的相加操作,具体描述参见 A + B Problem II

直接贴一个我写的代码:

string bigIntegerAdd(string s1, string s2)
{
    int len1 = s1.size();
    int len2 = s2.size();
    int len = len1 > len2 ? len1+1 : len2+1;
    string res(len, '0');    

    int i, j, k;
    int carry = 0, sum;
    for (i = len1-1, j = len2-1, k = len-1; i >= 0 || j >= 0; i--, j--, k--)
    {
        sum = carry;
        if (i >= 0)
            sum += s1[i] - '0';
        if (j >= 0)
            sum += s2[j] - '0';
        if (sum >= 10)
        {
            res[k] += sum - 10;
            carry = 1;
        }
        else
        {
            res[k] += sum;
            carry = 0;
        }
    }
    if (carry == 1)
    {
        res[k] = '1';
        return res;
    }
    else
        return res.substr(1);
}

reference:

C++ string 实现大整数相加减

C语言实现高精度大整数的加法

有兴趣的读者可以尝试着实现其他运算,比如相减、相乘、相除。

posted @ 2015-09-06 15:29  Sawyer Ford  阅读(215)  评论(0编辑  收藏  举报