题目描述:
Given two binary strings, return their sum (also a binary string).
For example,
a = "11"
b = "1"
Return "100".
我的思路:
给定连个二进制数,用字符串表示,计算他们的加和,然后也以字符串的形式返回。
先把两个字符串翻转,从低位加到高位,同时用一个p保存进位,如果最后有进位,在结果前面加1。
我的代码:
class Solution:
def addBinary(self, a, b):
a, b = a[::-1], b[::-1]
m = max(len(a), len(b))
p = 0 # p用来保存进位
rel = []
for i in range(m): # a_num,b_num分别表示a,b中的数,如果超出了长度就是0
a_num = int(a[i]) if i < len(a) else 0
b_num = int(b[i]) if i < len(b) else 0
p, res = divmod(a_num + b_num + p, 2)
rel.append(res)
if p == 1: # 如果最后结果有进位1的话,直接在高位添加1
rel.append(1)
return ''.join([str(x) for x in rel[::-1]])Discuss:
class Solution:
def addBinary(self, a, b):
return bin(int(a,2)+int(b,2))[2:]学到:
- bin() 返回一个整数 int 或者长整数 long int 的二进制表示。
- int() 函数用于将一个字符串或数字转换为整型。默认是十进制,可以修改参数。
本文介绍了一种解决二进制字符串相加问题的方法。通过翻转字符串并逐位进行加法运算,同时处理进位情况,最终得到正确的二进制结果。
719

被折叠的 条评论
为什么被折叠?



