leetcode之Add Binary的解法
class Solution(object):
def addBinary(self,a,b):
l=[]
carry=0
if len(a)>=len(b):
i=len(a)-1
for m in b[::-1]:
t=int(a[i])+int(m)+carry
carry=self.add(t,l)
i=i-1
else:
i=len(b)-1
for n in a[::-1]:
t=int(n)+int(b[i])+carry
carry=self.add(t,l)
i=i-1
if len(a)>len(b):
for n in a[-len(b)-1::-1]:
t=int(n)+carry
carry=self.add(t,l)
if len(a)<len(b):
for m in b[-len(a)-1::-1]:
t=int(m)+carry
carry=self.add(t,l)
if carry==1:
l.insert(len(l),'1')
l.reverse()
return ''.join(l)
def add(self,t,l):
if t==3:
l.append('1')
carry=1
elif t==2:
l.append('0')
carry=1
elif t==1:
l.append('1')
carry=0
else:
l.append('0')
carry=0
return carry
学习总结
1.unicode字符不能和str的相加减,不同于C的ascii字符,并且str类型也不支持相加减,可以用强制类型转换int()
2.java类里面非静态的方法可以在类内部调用,但是python里面不能直接调用,会报错,找不到该方法,必须使用self.方法名
3.不可以这样写str.join(l.reverse()),要分开l.reverse()和str.join(l)
4.list.insert(-1,obj)的结果是obj在倒数第二位,因为list插入当前位置,在插入之后的(包括本身)都向后移动