一、前记(3/3)
嘿嘿!非常不好意思,这一篇算法咕咕了一天,还好今天有认真的做人。因为最近有好多的聚会(外公过86岁生日)和比赛(WMCTF),所以这一篇blog在上个星期就没有来得及写。这个星期要好好做人了,上个星期过的太快乐了。争取留下时间可以和女朋友去一趟重庆耍。
二、题目描述

三、解题思路
1、我的思路
我的思路比较取巧,应该算是懒人专属。二进制转十进制的过程就不必叙述了,不难,不会的可以上网去百度一下。首先第一步:就是先将索引顺序转换成正确的运算顺序[::-1]。第二步:将字符串二进制转换成十进制。第三步:相加得到十进制和。第四步:将十进制转换成二进制再转换成字符串。
#encoding:utf-8
class Solution:
def addBinary(self, a: str, b: str) -> str:
i=0
x_a=0
x_b=0
reverse_a=a[::-1]
reverse_b=b[::-1]
print("this is reverse_a==",reverse_a)
print("this is reverse_b==",reverse_b)
for i in range(len(a)):
x_a=2**i*int(reverse_a[i])+x_a
print("this is int_a==",x_a)
for j in range(len(b)):
x_b=2**j*int(reverse_b[j])+x_b
print("this is int_b==",x_b)
int_sum=int(x_a)+int(x_b)
print("this is int_sum==",int_sum)
return str(bin(int_sum))[2:]
#as a checking
solution=Solution()
a='1010'
b='1011'
print(solution.addBinary(a,b))
2、别人的思路
(1)、其实别人的思路还是挺肝的,直接二进制求和。也就三种情况:0+0=0;1+0=1;1+1=0;分别列举一下就好。
class Solution:
def addBinary(self, a: str, b: str) -> str:
if a == '': return b
if b == '': return a
if a[-1] == '1' and b[-1] == '1':
return self.addBinary(self.addBinary(a[:-1],b[:-1]),'1')+'0'
elif a[-1] == '0' and b[-1] == '0':
return self.addBinary(a[:-1],b[:-1])+'0'
else:
return self.addBinary(a[:-1],b[:-1])+'1'
(2)、我还看到一个小火汁,他直接两个字符串比较(真正的肝帝)
class Solution:
def addBinary(self, a: str, b: str) -> str:
p1, p2 = len(a) - 1, len(b) - 1
res = ''
carray = 0
while 0 <= p1 and 0 <= p2:
if a[p1] == '1' and b[p2] == '1':
if carray:
res += '1'
carray = 1
else:
res += '0'
carray = 1
elif a[p1] == '1' or b[p2] == '1':
if carray:
res += '0'
carray = 1
else:
res += '1'
carray = 0
else:
if carray:
res += '1'
carray = 0
else:
res += '0'
carray = 0
p1 -= 1
p2 -= 1
if p1 == -1 and p2 == -1:
if carray:
res += '1'
elif p1 == -1 and p2 != -1:
while 0 <= p2:
if b[p2] == '1':
if carray:
res += '0'
carray = 1
else:
res += '1'
carray = 0
else:
if carray:
res += '1'
carray = 0
else:
res += '0'
p2 -= 1
if carray:
res += '1'
elif p1 != -1 and p2 == -1:
while 0 <= p1:
if a[p1] == '1':
if carray:
res += '0'
carray = 1
else:
res += '1'
carray = 0
else:
if carray:
res += '1'
carray = 0
else:
res += '0'
p1 -= 1
if carray:
res += '1'
res = list(res)
四、学到了什么?
学到了不同的思路。