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