标签:
对两个二进制的字符串求和。
注意点:
例子:
输入: a = “111”, b = “1”
输出: “1000”
从后往前依次相加,通过二进制来计算该位的值和进位值。如果最高位还有进位要添加一个位,最后把结果翻转。
class Solution(object):
def addBinary(self, a, b):
"""
:type a: str
:type b: str
:rtype: str
"""
result = []
carry = val = 0
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 + 1)])
if i < lengthB:
val += int(b[-(i + 1)])
carry, val = val // 2, val % 2
result.append(str(val))
if carry:
result.append(str(carry))
return "".join(result[::-1])
if __name__ == "__main__":
assert Solution().addBinary("111", "1") == "1000"
欢迎查看我的Github (https://github.com/gavinfish/LeetCode-Python) 来获得相关源码。
标签:
原文地址:http://blog.csdn.net/u013291394/article/details/50540383