题目:
Given two binary strings, return their sum (also a binary string).
For example,
a = "11"
b = "1"
Return "100"
.
题意:
给两个二进制字符串,写一个函数返回二进制的和,结果同样用字符串形式返回
代码:
class Solution(object):
def addBinary(self, a, b):
"""
:type a: str
:type b: str
:rtype: str
"""
a = a[::-1]
b = b[::-1]
lena = len(a)
lenb = len(b)
len_min = min(lena,lenb)
result = ''
carry = 0 #进位
for i in range(len_min) :
if a[i] == '1' :
x = 1
else :
x = 0
if b[i] == '1' :
y = 1
else :
y = 0
carry = x+y+carry
result += str(carry%2)
carry = carry/2
if lena < lenb :
for i in range(lena,lenb) :
if b[i] == '1' :
y = 1
else :
y = 0
carry = y+carry
result += str(carry%2)
carry = carry/2
if lenb < lena :
for i in range(lenb,lena) :
if a[i] == '1' :
x = 1
else :
x = 0
carry = x+carry
result += str(carry%2)
carry = carry/2
if carry == 1 :
result += str(carry)
return result[::-1]
笔记:
跟大数相加的算法是一样的。不过要注意的一点是:字符串已被命名为a,b,如果代码中的int型x,y,同样被命名为a,b,会报错。