给你两个二进制字符串 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” ,就不含前导零
来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/add-binary
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
啊啊啊啊没有个人版本,我写不出来(尝试不直接用直接用内置代码)
以下是GPT教我的 (T T)
不转换为十进制的Python程序,直接计算二进制数的和
如果两个二进制数不等长,可以在短的二进制数前面补0,使它们的位数相同,然后再计算它们的和。
class Solution(object):
def addBinary(self, a, b):
"""
:type a: str
:type b: str
:rtype: str
"""
# 将两个二进制数补齐到相同的位数
max_len = max(len(a), len(b))
a = a.zfill(max_len)
b = b.zfill(max_len)
# 定义进位标志
carry = 0
# 从右往左逐位相加
result = ''
for i in range(max_len - 1, -1, -1):
# 计算当前位的和
s = int(a[i]) + int(b[i]) + carry
# 判断是否需要进位
if s >= 2:
carry = 1
s -= 2
else:
carry = 0
# 将当前位的和添加到结果中
result = str(s) + result
# 如果最高位有进位,则在结果前添加一个1
if carry == 1:
result = '1' + result
return result
a = '1111'
b = '1'
print(Solution().addBinary(a, b))
内置代码(评论区看到的,一行代码,学到了学到了)
大佬的评论链接 https://leetcode.cn/problems/add-binary/comments/2644
class Solution(object):
def addBinary(self, a, b):
"""
:type a: str
:type b: str
:rtype: str
"""
return bin(int(a,2)+int(b,2))[2:]
LeetCode示例代码(同上)
class Solution(object):
def addBinary(self, a, b):
A = int(a,2) #将二进制转换为十进制
B = int(b,2)
c = A + B
C = bin(c)[2:] #将十进制转换为二进制,并截取第1位往后的字符串
return C