题解 | #大数加法#(填0将字符串变换到同一长度)

大数加法

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

class Solution {
public:
    string solve(string s, string t) {
        int l = s.length();
        int r = t.length();
        if(!l) return t;
        if(!r) return s;
        int carry = 0, tmp = 0;
        if(l < r){ // 将短的字符串补到同一个长度
            for(int n = r-l; n > 0; n--){
                s = '0' + s;
            }
        }else if(l > r){
            for(int n = l - r; n > 0; n--){
                t = '0' + t;
            }
        }

        l = s.size();
        for(int i = l-1; i >= 0; i--){ // 从后往前做加法
            tmp = s[i] - '0' + t[i] - '0' +carry;
            if(tmp >= 10){  // 需要进位
                carry = 1;
                tmp -= 10;
            }else{ // 不需要进位
                carry = 0;
            }
            s[i] = tmp + '0';
        }
        if(carry) s = '1' + s; // 最后一位相加产生了进位
        return s;
    }
};
全部评论

相关推荐

点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务