67. Add Binary

class Solution:
    def addBinary(self, a: str, b: str) -> str:
        i, j = len(a)-1, len(b)-1
        ans = ""
        carrying = False
        
        while i>=0 or j>=0:
            val = 0
            if i >= 0:
                if a[i] == "1":
                    val += 1
                i -= 1
                    
            if j >= 0:
                if b[j] == "1":
                    val += 1
                j -= 1
                    
            if val == 2 and carrying:
                ans += "1"
            else:
                if carrying:
                    val += 1
                    carrying = False
                    
                if val == 2:
                    carrying = True
                    ans += "0"
                elif val == 1:
                    ans += "1"
                else: # val == 0
                    ans += "0"
        
        if carrying:
            ans += "1"
        
        return ans[::-1]
  • just a bunch of annoying logic for doing addition by hand.

Categories:: string, math