67. Add Binary

2017-06-16  本文已影响0人  YellowLayne

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;
    }
};
上一篇 下一篇

猜你喜欢

热点阅读