美文网首页
[leetcode67]二进制求和

[leetcode67]二进制求和

作者: 欢仔_159a | 来源:发表于2023-10-13 13:31 被阅读0次

    题目:
    给你两个二进制字符串 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"。

    相关文章

      网友评论

          本文标题:[leetcode67]二进制求和

          本文链接:https://www.haomeiwen.com/subject/ihpibdtx.html