zoukankan      html  css  js  c++  java
  • LeetCode小白菜笔记[16]:Add Binary

    LeetCode小白菜笔记[16]:Add Binary

    67. Add Binary [easy]

    题目:

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

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

    两个表示二进制数的string相加,结果用string返回,code 如下:

    class Solution(object):
        def addBinary(self, a, b):
            """
            :type a: str
            :type b: str
            :rtype: str
            """
            carry = 0
            summ = ''
            if len(a) > len(b):
                lg = a
                st = b
            else:
                lg = b
                st = a
            for i in range(1,len(lg)+1):
                if i <= len(st):
                    summ = str(int(lg[-i]) ^ int(st[-i]) ^ carry) + summ
                    carry = int(int(lg[-i]) + int(st[-i]) + carry > 1)
                else:
                    if i <= len(lg):
                        summ = str(int(lg[-i]) ^ carry) + summ
                        carry = int(int(lg[-i]) + carry > 1)
            if carry == 0:
                return summ
            else:
                return '1' + summ

    先把指针分别指向长序列和短序列,在两个序列都有值的时候,每个位用ai+bi+carry,在只有一个有值的时候,用ai+carry,ai是长序列的元素。最后返回的时候看看有没有carry,有的话就要添一个‘1’,没有就直接返回。

    62ms,14.46%

    discuss上看到了一个有意思的:

    class Solution:
        def addBinary(self, a, b):
            return bin(eval('0b' + a) + eval('0b' + b))[2:]

    巧妙的用了类型转换函数bin,把求和出来的整数转成binary的字符串输出,求和过程直接用了eval转换成10进制。不过感觉有点过度利用python内置的函数了。。。比较实用,但是不知道作为算法题的答案是否合适。

    另外,python中的异或实用^这个冒尖表示的,不是xor。需要注意。

    2018年2月9日23:52:56

    快十二点了呀~

  • 相关阅读:
    搭建springCloud网关zuul
    springboot添加https
    SpringBoot上传文件,经过spingCloud-Zuul,中文文件名乱码解决办法
    springboot mongodb jpa常用方法整理
    springboot拦截中自动注入的组件为null问题解决方法
    springboot JPA mysql
    转载Spring Data JPA 指南——整理自官方参考文档
    springboot带有进度条的上传
    HTTP请求示例
    http的N种请求
  • 原文地址:https://www.cnblogs.com/morikokyuro/p/13256813.html
Copyright © 2011-2022 走看看