二进制求和
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% 的用户
不过好处就是我这样写好像可以省内存。。
先睡了。。。
以上是关于二进制求和的主要内容,如果未能解决你的问题,请参考以下文章