码迷,mamicode.com
首页 > 其他好文 > 详细

二进制求和

时间:2019-05-06 09:15:38      阅读:143      评论:0      收藏:0      [点我收藏+]

标签:列表   color   range   dbi   返回   示例   5.4   str   相加   

题目:

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

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

 

二进制求和

标签:列表   color   range   dbi   返回   示例   5.4   str   相加   

原文地址:https://www.cnblogs.com/dmndxld/p/10817422.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!