LeetCode 067 Add Binary

来源:互联网 发布:乐清市知临中学 编辑:程序博客网 时间:2024/06/03 13:18

给出两个由字符串表示的无符号二进制整数,求它们的和,也用二进制表示。

仿照十进制的高精度加法。其中相加和进位可以用逻辑运算处理。

代码:

    string addBinary(string a, string b) {        int ia = a.length() - 1;        int ib = b.length() - 1;        string num[2] = {"0", "1"};        string result;        bool c = false;        while(ia >= 0 && ib >= 0) {            result = num[c ^ (a[ia] == '1') ^ (b[ib] == '1')] + result;            c = (a[ia] == '1') && (b[ib] == '1') || c && (a[ia] == '1') || c && (b[ib] == '1');            ia--;            ib--;        }        while(ia >= 0) {            result = num[c ^ (a[ia] == '1')] + result;            c = c && (a[ia] == '1');            ia--;        }        while(ib >= 0) {            result = num[c ^ (b[ib] == '1')] + result;            c = c && (b[ib] == '1');            ib--;        }        if(c)            result = num[1] + result;        return result;    }
0 0
原创粉丝点击