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'
    '''
    

      

  • 相关阅读:
    问答
    观看视频后的笔记
    处理json的常用方式
    通过excel模板文件根据数据库数据修改其中的单元格数据
    declare用法
    添加文件然后自动打开
    Mybatis之入门
    观察者模式
    职责链模式
    并发新构件之Exchanger:交换器
  • 原文地址:https://www.cnblogs.com/always-fight/p/10313554.html
Copyright © 2011-2022 走看看