题目
给你两个二进制字符串,返回它们的和(用二进制表示)。
输入为 非空 字符串且只包含数字 1 和 0。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/add-binary
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
示例
示例 1:
输入: a = “11”, b = “1”
输出: “100”
示例 2:
输入: a = “1010”, b = “1011”
输出: “10101”
提示:
每个字符串仅由字符 '0' 或 '1' 组成。
1 <= a.length, b.length <= 10^4
字符串如果不是 "0" ,就都不含前导零。
解答
这种方法比较笨,先把两个二进制数字转为十进制相加,再将结果转为二进制输出。
class Solution:
def addBinary(self, a, b):
a = int(a, 2)
b = int(b, 2)
print(a, b)
num = a + b
arry = [] # 定义一个空数组,用于存放2整除后的商
while True:
arry.append(str(num % 2)) # 用列表的append方法追加
num = num // 2 # 用地板除求num的值
if num == 0: # 若地板除后的值为0,那么退出循环
break
return "".join(arry[::-1]) # 列表切片倒叙排列后再用join拼接
if __name__ == '__main__':
a = "11"
b = "1"
res = Solution().addBinary(a, b)
print(res)
发现python自带十进制转二进制的方法,代码优化一下。
class Solution:
def addBinary(self, a, b):
return bin(int(a,2)+int(b,2))[2:]