LeetCode解題之Add Binary
原題
對兩個二進制的字元串求和。
注意點:
- 最高位進位
例子:
輸入: a = “111”, b = “1”
輸出: “1000”
解題思路
從後往前依次相加,通過二進制來計算該位的值和進位值。如果最高位還有進位要添加一個位,最後把結果翻轉。
AC源碼
class Solution(object):
def addBinary(self, a, b):
"""
:type a: str
:type b: str
:rtype: str
"""
result = []
carry = val =
if len(a) < len(b):
a, b = b, a
lengthA = len(a)
lengthB = len(b)
for i in range(lengthA):
val = carry
val += int(a[-(i + )])
if i < lengthB:
val += int(b[-(i + )])
carry, val = val // , val %
result.append(str(val))
if carry:
result.append(str(carry))
return "".join(result[::-])
if __name__ == "__main__":
assert Solution().addBinary("111", "1") == "1000"
歡迎檢視我的Github (https://github.com/gavinfish/LeetCode-Python) 來獲得相關源碼。