zoukankan      html  css  js  c++  java
  • 二进制求和

    题目:

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

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

    示例 1:

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

    思路:我反正佛了我自己的思路。。先把字符串转列表,然后加0对其,因为我不会从高位加所以就颠倒相加得结果,结果是列表,再颠倒转字符串就行了。。。。我去。。这个不熟python可真难受

    class Solution:
        def addBinary(self, a: str, b: str) -> str:
            a1=list(a)
            b1=list(b)
            n1=len(a1)
            n2=len(b1)
    
            r=[]
            jin=0
            c=0
            if(n1>n2):
                for i in range(n1-n2):
                    b1.insert(i,'0')
                a1.reverse()
                b1.reverse()
                for j in range(n1):
                    c=int(a1[j])+int(b1[j])+jin
                    if(c<=1):
                        jin=0
                    if(c>2):
                        c=1
                        jin=1
                    if(c==2):
                        c=0
                        jin=1
                    
                    r.append(str(c))
                if(jin==1):
                    r.append('1')
            if(n1<n2):
                for i in range(n2-n1):
                    a1.insert(i,'0')
                a1.reverse()
                b1.reverse()
                for j in range(n2):
                    c=int(a1[j])+int(b1[j])+jin
                    if(c<=1):
                        jin=0
                    if(c>2):
                        c=1
                        jin=1
                    if (c == 2):
                        c = 0
                        jin = 1
                    
                    r.append(str(c))
                if(jin==1):
                    r.append('1')
            if(n1==n2):
                a1.reverse()
                b1.reverse()
                for j in range(n1):
                    c=int(a1[j])+int(b1[j])+jin
                    if(c<=1):
                        jin=0
                    if(c>2):
                        c=1
                        jin=1
                    if (c == 2):
                        c = 0
                        jin = 1
                    
                    r.append(str(c))
                if(jin==1):
                    r.append('1')
            r.reverse()
            ans=''
            for i in range(len(r)):
                ans+=str(r[i])
            return ans

    调试才知道自己有多菜。。。

    执行用时 : 64 ms, 在Add Binary的Python3提交中击败了55.48% 的用户
    内存消耗 : 13 MB, 在Add Binary的Python3提交中击败了97.07% 的用户
     
    不过好处就是我这样写好像可以省内存。。
    先睡了。。。
  • 相关阅读:
    详解 注解
    线段树分治
    实用Trick
    CF932F(李超线段树+dp)
    CF24D Broken robot(高斯消元)
    LCT学习笔记
    [HNOI2008]GT考试
    [AHOI2009]中国象棋
    [APIO2012]派遣
    CF961G Partitions
  • 原文地址:https://www.cnblogs.com/dmndxld/p/10817422.html
Copyright © 2011-2022 走看看