# Add Binary Problem & Solution

Given two binary strings `a` and `b`, return their sum as a binary string.

See the add binary problem on LeetCode.

## C++ Solution

``````#pragma GCC optimize("Ofast")
#pragma GCC optimization("unroll-loops")

static const int _=[](){std::ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);return 0;}();

class Solution {
public:
string addBinary(string a, string b) {
int longest = max(a.size(), b.size());
string sum(longest, '0');

int i = a.size() - 1;
int j = b.size() - 1;
int k = longest - 1;
int carryover = 0;
while (i >= 0 && j >= 0) {
int ci = a[i--] == '1' ? 1 : 0;
int cj = b[j--] == '1' ? 1 : 0;
sum[k--] = (ci + cj + carryover) % 2 + '0';
carryover = (ci + cj + carryover) / 2;
}

while (i >= 0) {
int ci = a[i--] == '1' ? 1 : 0;
sum[k--] = (ci + carryover) % 2 + '0';
carryover = (ci + carryover) / 2;
}

while (j >= 0) {
int cj = b[j--] == '1' ? 1 : 0;
sum[k--] = (cj + carryover) % 2 + '0';
carryover = (cj + carryover) / 2;
}

if (carryover > 0) {
sum.insert(0, "1");
}

return sum;
}
};
``````

## Start Here

Many paths, there are. Follow yours, you must.