二进制求和

Posted dmndxld

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二进制求和相关的知识,希望对你有一定的参考价值。

题目:

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

输入为非空字符串且只包含数字 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% 的用户
 
不过好处就是我这样写好像可以省内存。。
先睡了。。。

 

以上是关于二进制求和的主要内容,如果未能解决你的问题,请参考以下文章

简单模拟二进制求和

408 二进制求和

以下代码片段的算法复杂度

每日一道 LeetCode (15):二进制求和

Leetcode67. 二进制求和(简单模拟)

HDU 2106 decimal system (进制转化求和)