题目:
给你两个二进制字符串 a 和 b ,以二进制字符串的形式返回它们的和。
示例 1:
输入:a = "11", b = "1"
输出:"100"
示例 2:
输入:a = "1010", b = "1011"
输出:"10101"
提示:
1 <= a.length, b.length <= 104
a 和 b 仅由字符 '0' 或 '1' 组成
字符串如果不是 "0" ,就不含前导零
本人的漂亮烂代码:
def addBinary(self, a: str, b: str) -> str:
# res = int(a, 2) + int(b, 2)
# return bin(res)[2:]
def convert_decimal(a):
sum = 0
length = len(a)
for i,v in enumerate(a):
sum += int(v)*(2**(length - 1 - i))
return sum
def convert_binary(a):
if a==0:
return "0"
reminder = ""
while a:
reminder += str(a%2)
a = a//2
return reminder[::-1]
res = convert_decimal(a) + convert_decimal(b)
res = convert_binary(res)
return res
反思:
1、直接使用int()和bin()库函数。
2、笨办法:先转换成十进制计算,然后再转换成二进制函
3、转换成二进制时,记得等于0的特殊情况;另外取模后记得转换成字符串str(),因为题目需要返回二进制字符串,且不能有"0b"。