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

letcode[067] 二进制求和

作者: 一起学分析 | 来源:发表于2019-01-03 21:06 被阅读4次
    题目067

    题目地址:二进制求和

    思路1:自拟思路——用内置函数

    二进制转十进制后,相加再转为二进制。

    总结: 刚好能解决
    用时: 64 ms

    a = "11"
    b = "1"
    
    a = "1010"
    b = "1011"
    def addBinary1(a, b):
        a=int(a,2)
        b=int(b,2)
        c=a+b
        return bin(c)[2:]
    
    

    思路2:自拟思路——借助列表来推导

    1. 把a和b拆解成两个列表,然后用0填充成等长的列表,然后对应位数相加得出结果。

    2. 补充首位的0,用于进位的情况

    3. 按以下思路进行进位加减


      二进制的逐级叠加
    4. 判断最后结果首位是否是0,是则删除

    总结: emmm,怎么会想到这种奇葩思路?
    用时: 80 ms

    a="0"
    b="0"
    def addBinary2(a, b):
        la=len(a)
        lb=len(b)
        if la>lb:
            a_list=list(a)
            b_list=[0]*(la-lb)+list(b)
        else:
            b_list=list(b)
            a_list=[0]*(lb-la)+list(a)
        c_list=[]
        for i in range(max(la,lb)):
            c_list.append(int(a_list[i])+int(b_list[i]))
        d_list=[0]+c_list
        while 2 in d_list:
            for j in range(len(d_list)-1):
                if d_list[j+1]==2:
                    d_list[j]+=1
                    d_list[j+1]=0
        d_str=[str(x) for x in d_list]
        result="".join(d_str)
        if result[0]=='0':
            result=result[1:]
        return result
    
    

    相关文章

      网友评论

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

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