> For the complete documentation index, see [llms.txt](https://ucan.gitbook.io/notes/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ucan.gitbook.io/notes/67.-add-binary.md).

# 67. Add Binary

```java
class Solution {
    public String addBinary(String a, String b) {
        StringBuilder result = new StringBuilder();
        int i=a.length()-1, j=b.length()-1, carry =0;
        
        while(i>=0 || j>=0){
            int sum = carry;
            if(i>=0) sum+= a.charAt(i--)-'0';
            if(j>=0) sum+= b.charAt(j--)-'0';
            carry = sum/2;
            result.append(sum%2);
        }
        // remember: while loop stops when i,and j reach the head of strins,
        // but carry may be 1
        if(carry>0) result.append(carry);
        return result.reverse().toString();
    }
}
```
