leetcode--67--二进制求和

2020-03-09  本文已影响0人  北海bei

题目描述:

给定两个二进制字符串,返回他们的和(用二进制表示)。
输入为非空字符串且只包含数字 1 和 0。
示例 1:

输入: a = "11", b = "1"
输出: "100"

示例 2:

输入: a = "1010", b = "1011"
输出: "10101"

解题思路:

二进制转化为十进制,然后将十进制转化为二进制


代码1:

class Solution(object):
    def addBinary(self, a, b):
        a1 = int(a, 2)  # 二进制转换为十进制
        b1 = int(b, 2)  # 二进制转换为十进制
        sum1 = a1 + b1

        sum1 = bin(sum1).replace('0b', '')  # 十进制转换为二进制
        return sum1

s = Solution()
a = "1010"
b = "1011"

print(s.addBinary(a, b))

代码2:

class Solution(object):
    def addBinary(self, a, b):
        sum_a = 0
        for i in a:
            sum_a = sum_a * 2 + int(i)
        sum_b = 0
        for j in b:
            sum_b = sum_b * 2 + int(j)
        sum = sum_a + sum_b
        if sum == 0:
            return "0"
        ls = []
        while sum:
            ls.append(str(sum % 2))
            sum = int(sum / 2)
        return ''.join(ls[::-1])

s = Solution()
a = "1010"
b = "1011"
print(s.addBinary(a, b))

题目来源:

https://leetcode-cn.com/problems/add-binary

上一篇 下一篇

猜你喜欢

热点阅读