• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

nunca

但行好事 莫问前程
  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

LeetCode Easy: 67. Add Binary

 

一、题目

Given two binary strings, return their sum (also a binary string).

For example,
a = "11"
b = "1"
Return "100".

二进制加法

二、解题思路

第一种:先将二进制转换成十进制,做十进制加法,然后再转回二进制,代码只有一行,简单粗暴,有点作弊的感觉;

第二种:做二进制加法,设置进位项,这里可以先做加法然后再反转字符串即可。

三、代码

#coding:utf-8
def addBinary1(a, b):
    """
    :type a: str
    :type b: str
    :rtype: str
    """
    print(bin(int(a, 2) + int(b, 2))[2:])
    return bin(int(a, 2) + int(b, 2))[2:]

def addBinary2(a,b):
    size_a = len(a)
    size_b = len(b)
    carry,ana = 0,""
    if size_a == 0:
        return b
    if size_b == 0:
        return a
    while size_a > 0 and size_b > 0:
        tmp = int(a[size_a-1])+int(b[size_b-1])+carry
        carry = tmp // 2
        tmp %=2
        ana += str(tmp)
        size_a -= 1
        size_b -= 1
    if size_a == 0:
        while size_b > 0:
            tmp = int(b[size_b-1])+carry
            carry = tmp // 2
            tmp %= 2
            ana += str(tmp)
            size_b -= 1
    if size_b == 0:
        while size_a > 0:
            tmp = int(a[size_a-1])+carry
            carry = tmp // 2
            tmp %= 2
            ana += str(tmp)
            size_a -= 1
    if carry == 1:
        ana += str(carry)
    ana = ana[::-1]
    print(ana)
    return ana
if __name__ == '__main__':
    a = "1"
    b = "111"
    addBinary2(a,b)

参考博客:https://www.cnblogs.com/asrman/p/3974226.html?utm_source=tuicool&utm_medium=referral

既然无论如何时间都会过去,为什么不选择做些有意义的事情呢

posted on 2018-03-29 09:13  乐晓东随笔  阅读(166)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3