67.二进制求和
给你两个二进制字符串,返回它们的和(用二进制表示)。
输入为 非空 字符串且只包含数字
1
和0
。
解答①:二进制转换为十进制计算结果后再转回二进制
class Solution:
def addBinary(self, a: str, b: str) -> str:
num_1 = Solution.twoToTen(a)
num_2 = Solution.twoToTen(b)
num = num_1 + num_2
li = Solution.tenToTwo(num)
res = ''
for i in li:
res = res + str(i)
return res
def twoToTen(str):
length = len(str)
n = 0
res = 0
for i in range(length-1,-1,-1):
res = res + int(str[i])*(2**n)
n +=1
return res
def tenToTwo(str):
num = int(str)
yushu = []
shang = []
while num//2 != 0:
yushu.append(num%2)
shang.append(num//2)
num = num//2
yushu.append(num)
yushu.reverse()
return yushu
利用python内置转进制方法:
class Solution:
def addBinary(self, a, b) -> str:
#int(a,2)意思是a这个数字是二进制,转换为int型十进制的数字
#format字符串格式化
return '{0:b}'.format(int(a, 2) + int(b, 2))
官方:leetcode题解
官方提两种思路:第一种按位相加判断有无进位;第二种位运算。