构造一个二进制加减函数。从后一位相加,一直加到最后,同时注意的几点。
1,进位也需要算,因此二进制函数是三个参数
2,最后要检验进位是否为0.当进位为1时,要考虑。
class Solution:
def addBinary(self, a, b):
"""
:type a: str
:type b: str
:rtype: str
"""
s=[] #每次得到结果存放
z =0 #进位
b1 = min(len(a),len(b)) #长度,待会循环会用
for i in range(b1): #b1--0 1 2 3 4 #加一个
c = self.add(a[-1-i],b[-1-i],z)
z = c[0]
s.append(c[1])
b2 = max(len(a),len(b))
for i in range(b1,b2,1): #b2 5 6 7 8 #剩下的
if len(a)==b2:
c = self.add(a[-i-1],0,z)
z =c[0]
s.append(c[1])
elif len(b)==b2:
c = self.add(0,b[-1-i],z)
z = c[0]
s.append(c[1])
else:
print('error1')
if z ==1: #检查进位是否为1
s.append(z)
res =[]
for i in range(len(s)): #翻转
res.append(str(s[-i-1]))
result = ''.join(res)
return result
def add(self,x,y,z): #二进制加法,返回【进位,数】
'x,y,z int'
c = int(x)+int(y)+int(z)
if c==0:
return [0,0]
if c ==1:
return [0,1]
if c ==2:
return [1,0]
if c ==3:
return [1,1]
else:
print('error2')
c = Solution()
a = "1"
b = '1'
z = c.addBinary(a,b)
print(z)