题解 | #大数加法#

大数加法

http://www.nowcoder.com/practice/11ae12e8c6fe48f883cad618c2e81475

string solve(string s, string t) {//参考大佬的python代码用c++实现
        // write code here
        int i = s.size()-1, j = t.size()-1, carry = 0;
        int maxLen = max(i, j)+1;  //这里需要用最长的字符串作为遍历长度,因为需要把所有数字加进去,考虑可能越界,所以越界就默认加零
        string rst = "";
        for(int k = 0; k < maxLen; ++k)
        {
            int m = i >= 0 ? (s[i]-'0') : 0;
            int n = j >= 0 ? (t[j]-'0') : 0;
            int total = m + n + carry;
            carry = total / 10;                
            rst = (char)(total%10 + '0') + rst; //将加法结果转换成字符
            i -= 1;
            j -= 1;
        }
        rst = carry ? ("1"+rst) : rst;  //最后判断是否有进位,即carry是否大于一
        return rst;
    }
全部评论

相关推荐

01-07 07:54
已编辑
门头沟学院 前端工程师
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务