这道题其实和其他类似问题很相似,就是要处理carry的问题。时间复杂度是O(N),空间复杂度是O(1)
class Solution: def addBinary(self, a: str, b: str) -> str: i, j, carry = len(a) - 1, len(b) - 1, 0 result = [] while i >= 0 and j >= 0: digit = (int(a[i]) + int(b[j]) + carry) % 2 carry = (int(a[i]) + int(b[j]) + carry) // 2 result.insert(0, digit) i -= 1 j -= 1 while i >= 0: digit = (int(a[i]) + carry) % 2 carry = (int(a[i]) + carry) // 2 result.insert(0, digit) i -= 1 j -= 1 while j >= 0: digit = (int(b[j]) + carry) % 2 carry = (int(b[j]) + carry) // 2 result.insert(0, digit) i -= 1 j -= 1 if carry == 1: result.insert(0, carry) return ‘‘.join(map(str, result))
原文:https://www.cnblogs.com/codingEskimo/p/12220204.html