美文网首页
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] 二进制求和

    题目地址:二进制求和 思路1:自拟思路——用内置函数 二进制转十进制后,相加再转为二进制。 总结: 刚好能解决用时...

  • LeetCode067 二进制求和

    题目: 思路: 满二进一;在计算时直接进行各个位上的字符串拼接,最终会得到一个反向字符串,然后再反转过来;时间复杂...

  • Median of Two Sorted Arrays

    标签(空格分隔): C++ 算法 LetCode 数组 每日算法——letcode系列 问题 Median of ...

  • Add Two Numbers

    每日算法——letcode系列 标签: 算法 C++ LetCode 问题 Add Two Numbers Di...

  • Longest Common Prefix

    标签: C++ 算法 LetCode 字符串 每日算法——letcode系列 问题 Longest Common ...

  • Roman to Integer

    标签: C++ 算法 LetCode 字符串 每日算法——letcode系列 问题 Roman to Intege...

  • 3Sum

    标签(空格分隔): C++ 算法 LetCode 数组 每日算法——letcode系列 问题 Longest Co...

  • 二进制求和

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

  • 二进制求和

  • 二进制求和

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

网友评论

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

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