题目描述
给定两个二进制字符串,返回他们的和(用二进制表示)。
输入为非空字符串且只包含数字 1 和 0。
示例1:
输入: a = “11”, b = “1”
输出: “100”
示例2:
输入: a = “1010”, b = “1011”
输出: “10101”
方法一:内置函数
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:]
方法二:较短的字符串用0补齐再相加
class Solution(object):
def addBinary(self, a, b):
"""
:type a: str
:type b: str
:rtype: str
"""
if len(a) > len(b):
b = '0'*(len(a)-len(b)) + b
elif len(a) < len(b):
a = '0'*(len(b)-len(a)) + a
ans =''
flag = 0
for i in range(len(a)-1, -1, -1):
temp = int(a[i]) + int(b[i]) + flag
if temp >= 2:
flag = 1
ans += str(temp-2)
else:
ans += str(temp)
flag = 0
if flag:
ans += '1'
return ans[::-1]