zoukankan      html  css  js  c++  java
  • 两个数字字符串求二进制和

    一、题目描述

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

     示例 1:

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

      输出: "100"

     示例 2:

      输入: a = "1010", b = "1011"

      输出: "10101"

     方法一:两个字符串变成整数求和,然后从末尾到首位进行判断,和是2则前一位进1

    class Solution:
        def addBinary(self, a, b):
            """
            :type a: str
            :type b: str
            :rtype: str
            """
            sum_str = str(int(a) + int(b))
            result = ''
            flag = 0
            for index in range( len(sum_str)-1, -1, -1):
                if flag == 1:
                    temp = int(sum_str[index]) + 1
                    
                    if temp == 3:
                        result += '1'
                        flag = 1
                    elif temp == 2:
                        result += '0'
                        flag = 1
                    elif temp == 1:
                        result += '1'
                        flag = 0
                    elif temp == 0:
                        result += '0'
                        flag = 0
                    
                elif flag == 0:#必须是elif,不能是if,因为上面的代码已经改变了flag
                    temp = int(sum_str[index])
                    
                    if temp == 3:
                        result += '1'
                        flag = 1
                    elif temp == 2:
                        result += '0'
                        flag = 1
                    elif temp == 1:
                        result += '1'
                        flag = 0
                    elif temp == 0:
                        result += '0'
                        flag = 0
                    
            if flag == 1:#处理首位为2
                result += '1'
            return result[::-1]
    

     方法二:两个字符串二进制加和后转换为二进制数

    class Solution:
        def addBinary(self, a, b):
            """
            :type a: str
            :type b: str
            :rtype: str
            """
            return bin(int(a, 2) + int(b, 2))[2:]
    
    #int(a, 2),其中2表示转换a为2进制
    #bin() 返回一个整数 int 或者长整数 long int 的二进制表示(字符串)
    '''
    bin(10)
    '0b1010'
    bin(20)
    '0b10100'
    '''
    

      

  • 相关阅读:
    JavaScript入门基础(三)
    JavaScript入门基础(二)
    Web页面该如何布局
    如何通过SQL创建删除表的索引,UNIQUE KEY
    vim使用大全
    安装vmwaretools后 真机和虚拟机仍不能复制黏贴
    php通用函数html时间文件大小生成随机数
    Centos下安装配置phpmyadmin
    [Leetcode 43] 11 Container With Most Water
    [Leetcode 39] 129 Sum Root to Leaf Numbers
  • 原文地址:https://www.cnblogs.com/always-fight/p/10313554.html
Copyright © 2011-2022 走看看