给定两个二进制字符串,返回他们的和(用二进制表示)。
输入为非空字符串且只包含数字 1 和 0。
示例 1:
输入: a = "11", b = "1"
输出: "100"
示例 2:
输入: a = "1010", b = "1011"
输出: "10101"
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/add-binary
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路一:模拟手动计算二进制的过程,从后往前一位一位的加,大于二是进位,每次将计算结果存入一个List数组中,最后稍加处理返回即可。
Python代码:
class Solution:
def addBinary(self, a: str, b: str) -> str:
max_len = max(len(a), len(b))
jw = 0
ans = []
for i in range(1, max_len+1):
if i <= len(a) and i <= len(b):
t = int(a[-i]) + int(b[-i]) + jw
jw = t // 2
ans.append(t % 2)
elif i <= len(a):
t = int(a[-i]) + jw
jw = t // 2
ans.append(t % 2)
else:
t = int(b[-i]) + jw
jw = t // 2
ans.append(t % 2)
# print(jw)
if jw == 1:
ans.append(jw)
return ''.join( str(ans[i]) for i in range(len(ans)-1, -1, -1))
思路二:利用python里面的函数,先将两个数转为十进制数进行相加,然后将结果转为二进制。
class Solution:
def addBinary(self, a, b) -> str:
return '{0:b}'.format(int(a, 2) + int(b, 2))