Java:
class Solution {
public String addBinary(String a, String b) {
StringBuilder ans = new StringBuilder();
int la = a.length() - 1;
int lb = b.length() - 1;
int carry = 0;
while ( la>=0 || lb>=0){
int sum = carry;
if (la>=0) sum+=a.charAt(la--) - '0';
if (lb>=0) sum+=b.charAt(lb--) - '0';
carry = sum/2;
ans.append(sum%2);
}
if(carry > 0) ans.append(carry);
return ans.reverse().toString();
}
}
Python:
class Solution:
def addBinary(self, a, b):
"""
:type a: str
:type b: str
:rtype: str
"""
if len(a) == 0:
return b
if len(b) == 0:
return a
if a[-1] == '1' and b[-1] == '1':
return self.addBinary(self.addBinary(a[:-1], b[:-1]), '1') + '0'
if a[-1] == '0' and b[-1] == '0':
return self.addBinary(a[:-1], b[:-1]) + '0'
else:
return self.addBinary(a[:-1], b[:-1]) + '1'