美文网首页
67. Add Binary

67. Add Binary

作者: YellowLayne | 来源:发表于2017-06-16 18:56 被阅读0次

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;
    }
};

相关文章

网友评论

      本文标题:67. Add Binary

      本文链接:https://www.haomeiwen.com/subject/hsmmqxtx.html