博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Leetcode 67 二进制求和
阅读量:6912 次
发布时间:2019-06-27

本文共 1311 字,大约阅读时间需要 4 分钟。

给定两个二进制字符串,返回他们的和(用二进制表示)。

输入为非空字符串且只包含数字 1 和 0

示例 1:

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

 

示例 2:

输入: a = "1010", b = "1011"输出: "10101"
  • 解题思路

  先将字符串转换为整数再转化为十进制数,进行相加后,再转换回二进制数

  

def addBinary(a, b):    x=int(a)#转换为整数    y=int(b)    sum=0    s=0    if a=='0' and b=='0':        return '0'    if a=='0':        for j in range(len(b)):            t = y % 10            s += t * (2 ** j)            y = y // 10        t=s    elif b=='0':        for i in range(len(a)):  # 十进制转二进制            z = x % 10            sum += z * (2 ** i)            x = x // 10        t=sum    else:        for i in range(len(a)):#十进制转二进制            z=x%10            sum+=z*(2**i)            x=x//10        for j in range(len(b)):            t= y % 10            s += t*(2 ** j)            y= y// 10        t=sum+s    l=[]    res=''    for i in range(t):#二进制转十进制        n=t%2        m=t//2        if m!=0:            l.append(n)        else:            l.append(n)            break        t=t//2        # print(total)    l.reverse()    for i in l:        res+=str(i)    return res

但这样循环次数太多,效率太低,参考了别人的代码发现二进制,十进制间可以直接转换

print(int(a,2))#二进制转十进制,a为字符串格式如'111'print(bin(2))#十进制转二进制

注:bin()转换后的数据类型为'str'

  • 大神的实现代码

  

sum=int(a,2)+int(b,2)res=bin(sum)#return res[2:]#十进制转换为二进制后为'0bxxx',因此要去掉前两位

 

转载于:https://www.cnblogs.com/Aprilnn/p/9300618.html

你可能感兴趣的文章
大数据体系【概念认知】系列-2:存储以及副本策略
查看>>
Android Hacks:同时启动多个Intent
查看>>
简明的数据库设计模式
查看>>
我的友情链接
查看>>
linux企业常用服务---haproxy+nginx搭建web高可用集群
查看>>
win7 断开 共享连接的操作方法
查看>>
CTSSD服务无法正常启动:Failure 4 in trying to open SV key PROCL-4/PROCL-5 clsctss_r_av2
查看>>
再议OPEN CURSOR与BULK COLLECT
查看>>
我的友情链接
查看>>
jquery attr与prop
查看>>
casatwy组件化方案
查看>>
Linux中ls对文件进行按大小排序和按时间排序
查看>>
Unix/Linux下安装NPM
查看>>
Apache与Tomcat区别联系
查看>>
洪水***源码
查看>>
用shell编写批量打包日志脚本
查看>>
nginx访问白屏
查看>>
Pentaho6.1中D3可视化库的集成及数据联动的实现
查看>>
部署LyncServer2013之七 启动服务和登陆LyncServer控制面板
查看>>
Android开发者:你真的会用AsyncTask吗?
查看>>