67. Add Binary

1.描述

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

For example,
a = "11"
b = "1"
Return "100".

2.分析

3.代码

class Solution {
public:
    string addBinary(string a, string b) {
        int ida = a.length();
        int idb = b.length();
        if (0 == ida || 0 == idb) return 0 == ida ? b : a;
        
        if (ida < idb) { 
            a.swap(b); 
            int tmp = ida;
            ida = idb;
            idb = tmp;
        }
        
        string sum = "";
        bool carry = false;
        --ida; --idb;
        while (0 <= ida) {
            if (idb < 0) {
                if ('1' == a[ida] && carry) {
                    sum.insert(sum.begin(), '0');
                    carry = true;
                } else {
                    sum.insert(sum.begin(), '1' == a[ida] || carry ? '1' : '0');
                    carry = false;
                }
                --ida;
            } else {
                if ('1' == a[ida] && '1' == b[idb]) {
                    sum.insert(sum.begin(), carry ? '1' : '0');
                    carry = true;
                } else if ('1' == a[ida] || '1' == b[idb]) {
                    sum.insert(sum.begin(), carry ? '0' : '1');
                    carry = carry ? true : false;
                } else {
                    sum.insert(sum.begin(), carry ? '1' : '0');
                    carry = false;
                }
                --ida;
                --idb;
            } 
        }
        if (carry) sum.insert(sum.begin(),'1');
        return sum;
    }
};
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容