67. Add Binary
  1. class Solution:
  2. def addBinary(self, a: str, b: str) -> str:
  3. a = list(a)
  4. b = list(b)
  5.  
  6. re = [] # save result
  7.  
  8. rd = 0 # round
  9. while a and b:
  10. s = rd + int(a.pop()) + int(b.pop())
  11. if s > 1:
  12. re.append(str(s-2))
  13. rd = 1
  14. else:
  15. re.append(str(s))
  16. rd = 0
  17.  
  18. c = a if a else b
  19.  
  20. while c:
  21. s = rd + int(c.pop())
  22. if s > 1:
  23. re.append(str(s-2))
  24. rd = 1
  25. else:
  26. re.append(str(s))
  27. rd = 0
  28.  
  29. if rd == 1:
  30. re.append('1')
  31.  
  32. re.reverse()
  33.  
  34. return ''.join(re)
  35.  
  36. def main():
  37. s = Solution()
  38.  
  39. print(s.addBinary("11", "1")) # 100
  40. print(s.addBinary("1010", "1011")) # 10101
  41.  
  42. if __name__ == '__main__':
  43. main()