class Solution:
def addBinary(self, a: str, b: str) -> str:
a = list(a)
b = list(b)
re = [] # save result
rd = 0 # round
while a and b:
s = rd + int(a.pop()) + int(b.pop())
if s > 1:
re.append(str(s-2))
rd = 1
else:
re.append(str(s))
rd = 0
c = a if a else b
while c:
s = rd + int(c.pop())
if s > 1:
re.append(str(s-2))
rd = 1
else:
re.append(str(s))
rd = 0
if rd == 1:
re.append('1')
re.reverse()
return ''.join(re)
def main():
s = Solution()
print(s.addBinary("11", "1")) # 100
print(s.addBinary("1010", "1011")) # 10101
if __name__ == '__main__':
main()