[leetcode67]二进制求和

2023-10-13  本文已影响0人  欢仔_159a

题目:
给你两个二进制字符串 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" ,就不含前导零

本人的漂亮烂代码:

    def addBinary(self, a: str, b: str) -> str:
        # res = int(a, 2) + int(b, 2)
        # return bin(res)[2:]
        def convert_decimal(a):
            sum = 0
            length = len(a)
            for i,v in enumerate(a):
                sum += int(v)*(2**(length - 1 - i))
            return sum

        def convert_binary(a):
            if a==0:
                return "0"
            reminder = ""
            while a:
                reminder += str(a%2)
                a = a//2
            return reminder[::-1]  

        res = convert_decimal(a) + convert_decimal(b)
        res = convert_binary(res)  
        return res

反思:
1、直接使用int()和bin()库函数。
2、笨办法:先转换成十进制计算,然后再转换成二进制函
3、转换成二进制时,记得等于0的特殊情况;另外取模后记得转换成字符串str(),因为题目需要返回二进制字符串,且不能有"0b"。

上一篇 下一篇

猜你喜欢

热点阅读