LeetCode - 67. Add Binary

来源:互联网 发布:中国网络全世界最自由 编辑:程序博客网 时间:2024/06/05 20:22


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) {        string binary[] = { "0", "1" };        string ans = "";                int aSize = a.size();        int bSize = b.size();                if( aSize > bSize ) {            for( int i = 0; i < aSize - bSize; i++ ) {                b = binary[0] + b;            }        }                if( bSize > aSize ) {            for( int i = 0; i < bSize - aSize; i++ ) {                a = binary[0] + a;            }        }                int i = aSize > bSize ? aSize - 1 : bSize - 1;        int r = 0;                while( i >= 0 ) {            int aNum = a[i] - '0';            int bNum = b[i] - '0';            int num = aNum + bNum + r;                        if( num > 1 ) r = 1;            else r = 0;                        num = num % 2;                        ans = binary[num] + ans;            i--;        }                if( r == 1 ) {            ans = binary[1] + ans;        }                return ans;            }};


0 0