LeetCode-67、二进制求和-简单
给定两个二进制字符串,返回他们的和(用二进制表示)。
输入为非空字符串且只包含数字 1 和 0。
示例 1:
输入: a = "11", b = "1"
输出: "100"
示例 2:
输入: a = "1010", b = "1011"
输出: "10101"
代码1:
class Solution:
def addBinary(self, a: str, b: str) -> str:
lena = len(a)
lenb = len(b)
if lena >= lenb:
length = lena
differ = lena - lenb
b = differ * '0' + b
else:
length = lenb
differ = lenb - lena
a = differ * '0' + a
res = ''
carry = 0
for i in range(-1, -length-1, -1):
if a[i] == '0' and b[i] == '0':
res = str(carry ^ 0) + res
carry = 0
elif a[i] == '1' and b[i] == '1':
res = str(carry ^ 0) + res
carry = 1
else:
res = str(carry ^ 1) + res
if carry:
return '1' + res
else:
return res
代码2:
class Solution:
def addBinary(self, a: str, b: str) -> str:
return bin(int(a, 2) + int(b, 2))[2:]
# return format(int(a, 2)+int(b, 2), "b")
# format()函数直接转换进制。 二进制(b)、十进制(d)、八进制(o)、十六进制(x)
# int(x, base=10):x 为字符串或数字,base 为进制数,默认十进制
# bin(x):x 为 int 或者 long int 数字,返回二进制表示的字符串
# 例1:bin(10) -> '0b1010'
# 例2:bin(20) -> '0b10100'