塞进裤子ヾ(≧O≦)〃嗷~

0%

leetcode-67二进制求和

method1

先将字符串转成10进制计算结果,再将10进制的结果转成二进制

int(a,2) 将a转为10进制数,其中,a是二进制描述的字符串。

如int(“100”,2) out:4

bin(x) 将x转为二进制,注意会在开头加上0b

bin(4) out:0b100

1
2
3
4
5
6
7
8
class Solution(object):
def addBinary(self, a, b):
"""
:type a: str
:type b: str
:rtype: str
"""
return bin(int(a,2) + int(b,2))[2:]

Method2:

开头补0将a和b弄成相同长度;

模拟二进制加法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class Solution(object):
def addBinary(self, a, b):
"""
:type a: str
:type b: str
:rtype: str
"""
#开头补0将a和b弄成相同长度
d=len(b) - len(a) #d可能为正也可能为负
a = '0'*d + a
b = '0'*(-d) + b #字符串*负数=""

mysum = 0 #当前位的和
p = 0 #进位
mystr = "" #要返回的字符串
#从末尾相加
for i, j in zip(a[::-1],b[::-1]):
mysum = int(i) + int(j) + p
# %2 取余,即进位后剩下的数
mystr = str(mysum%2) + mystr #注意mystr放在后面
p = mysum // 2 #进位

#最后检查下开头要不要进位
return '1' + mystr if p >0 else mystr
if help:小手一抖点个广告 or 大手一挥资助一下