Leetcode 67. Add Binary

来源:互联网 发布:ext3 windows 编辑:程序博客网 时间:2024/05/29 16:56

Given two binary strings, return their sum (also a binary string).

For example,
a = “11”
b = “1”
Return “100”.

class Solution {public:    string addBinary(string a, string b) {        if (a.size() > b.size()) return addBinary(b, a);        int carry = 0;        size_t na = a.size();        size_t nb = b.size();        for (int i = 1; i <= na; ++i) {            int sum = a[na - i] - '0' + b[nb - i] - '0' + carry;            b[nb - i] = '0' + (sum & 1);            carry = sum >> 1;        }        for (int j = na + 1; j <= nb; ++j) {            if (carry == 0) return b;            int sum = b[nb - j] - '0' + carry;            b[nb - j] = '0' + (sum & 1);            carry = sum >> 1;        }        if (carry == 1)            b = string(1, '1') + b;        return b;    }};

参考后

class Solution {public:    string addBinary(string a, string b) {        int i = a.size() - 1;        int j = b.size() - 1;        string ret;        int carry = 0;        while (i >= 0 || j >= 0 || carry == 1) {            carry += (i >= 0) ? a[i--] - '0': 0;            carry += (j >= 0) ? b[j--] - '0': 0;            ret = char('0' + (carry & 1)) + ret;            carry >>= 1;        }        return ret;    }};
原创粉丝点击