LeetCode16—— 二进制求和
学习目标:
题目内容:
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/add-binary
python实现:
方法一:先求出二进制对应的十进制,求和以后返回二进制
class Solution(object):
def addBinary(self, a, b):
"""
:type a: str
:type b: str
:rtype: str
"""
a, b = int(a, 2), int(b, 2)
#bin() 返回一个整数 int 或者长整数 long int 的二进制表示。
return bin(a + b)[2:]
if __name__ == '__main__':
a = "10"
b = "1111"
aa = Solution()
print(aa.addBinary(a,b))
方法二:先补齐a,b长度,从右往左按位相加,和大于等于2时,向左进1,依次递推
class Solution(object):
def addBinary(self, a, b):
"""
:type a: str
:type b: str
:rtype: str
"""
len_a=len(a)
len_b=len(b)
if len_a<=len_b:
a='0'*(len_b-len_a)+a
if len_a>len_b:
b = '0' * (len_a - len_b) + b
# print(b)
index = 0
c = []
for i in range(max(len_a,len_b)-1,-1,-1):
temp=int(a[i])+int(b[i])+index
if temp>=2:
index=1
temp=temp%2
# c.insert(0, '0')
else:
index = 0
# c.insert(0, '1')
c.insert(0, str(temp))
# print(index)
if index==1:
c.insert(0, '1')
# c=str(c)
# print(c)
return ''.join(c)
if __name__ == '__main__':
a = "10"
b = "1111"
aa = Solution()
print(aa.addBinary(a,b))