[LeetCode] 67. Add Binary
这道题其实和其他类似问题很相似,就是要处理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))
posted on 2020-01-21 03:06 codingEskimo 阅读(99) 评论(0) 编辑 收藏 举报