题目描述:
给定两个二进制字符串,返回他们的和(用二进制表示)。
输入为非空字符串且只包含数字 1
和 0
。
示例 1:
输入: a = "11", b = "1"
输出: "100"
示例 2:
输入: a = "1010", b = "1011"
输出: "10101"
解题思路:
#方法一:先将二进制字符串化为等长度,对应两位相加,用一个新的字符串统计结果即可,注意使用进位(temp)
#方法二:使用内置函数 bin() 和 int()
代码实现:
方法一:
class Solution:
def addBinary(self, a: str, b: str) -> str:
s = '' #用于统计结果的字符串
temp = 0 # 临时保存进位
if len(a) > len(b): # 将二进制字符串补成等长度形式便于相加
l = len(a) - len(b)
for i in range(l):
b = '0' + b
else:
l = len(b) - len(a)
for i in range(l):
a = '0' + a
for i in range(len(a) - 1, -1, -1): # 对应两位进行相加(注意进位)
if int(a[i]) + int(b[i]) + temp == 0:
s += '0'
temp = 0
elif int(a[i]) + int(b[i]) + temp == 1:
s += '1'
temp = 0
elif int(a[i]) + int(b[i]) + temp == 2:
s += '0'
temp = 1
else:
s += '1'
temp = 1
if temp == 1: # 最后需要把进位也加上
s += '1'
elif temp == 2:
s += '10'
s = s[::-1] # 得到的字符串需要进行反转才是最后结果
return s
方法二:
class Solution:
def addBinary(self, a: str, b: str) -> str:
return bin(int(a, base=2) + int(b,base=2))[2:]
关注我的公众号免费获取海量python视频教程!!!