class Solution:
def addBinary(self, a: str, b: str) -> str:
# 初始化结果和进位
result = []
carry = 0
# 从字符串末尾开始逐位相加
i, j = len(a) - 1, len(b) - 1
while i >= 0 or j >= 0 or carry:
# 获取当前位的值,如果已经遍历完则视为0
digit_a = int(a[i]) if i >= 0 else 0
digit_b = int(b[j]) if j >= 0 else 0
# 计算当前位的和
total = digit_a + digit_b + carry
# 当前位的结果是 total % 2
result.append(str(total % 2))
# 更新进位
carry = total // 2
# 移动指针
i -= 1
j -= 1
# 将结果反转并转换为字符串
return ''.join(reversed(result))