[LeetCode] Problem 67 - Add Binary

Given two binary strings, return their sum (also a binary string).

The input strings are both non-empty and contains only characters 1 or 0.

Example

No.1

Input: a = “11”, b = “1”

Output: “100”

No.2

Input: a = “1010”, b = “1011”

Output: “10101”

Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public String addBinary(String a, String b) {
int carry = 0;
StringBuffer result = new StringBuffer();

for (int i = a.length() - 1, j = b.length() - 1; i >= 0 || j >= 0; i--, j--) {
int sum = carry;

if (i >= 0)
sum += a.charAt(i) - '0';
if (j >= 0)
sum += b.charAt(j) - '0';

carry = sum / 2;
result.insert(0, sum % 2);
}

if (carry > 0)
result.insert(0, carry);

return result.toString();
}