LeetCode 67. バイナリ和python

1229 ワード

タイトル:2つのバイナリ文字列を指定し、彼らの和(バイナリで表される)を返します.空白以外の文字列として入力され、数字1および0のみが含まれます.
例1:
  : a = "11", b = "1"
  : "100"

例2:
  : a = "1010", b = "1011"
  : "10101"

私のpythonの書き方:
class Solution(object):
    def addBinary(self, a, b):
        """
        :type a: str
        :type b: str
        :rtype: str
        """
        m = len(a)
        n = len(b)
        p = ''
        
        if m==max(m,n): 
            a='0'+a                #    ,      。
            b='0'*(m-n+1)+b  
        else: 
            b='0'+b
            a='0'*(n-m+1)+a
        n = len(b)                #       
        tmp='0'                    #     
        for i in range(n-1,-1,-1):  #    
            if a[i]==b[i]:
                p = tmp+p
                if b[i]=='1': tmp='1'
                else: tmp='0'   
            elif tmp=='0': 
                p='1'+p
            else: p='0'+p 
                
        if p[0]=='0': return p[1:]
        return p