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'