LeetCode | 67 | 二進制求和

"""
67. 二進制求和
https://leetcode.cn/problems/add-binary/
題目分析:
    這是難度是簡單,和上一題66題思路一致,就是進位的處理
理論:模擬
    簡單的寫一下思路:
    從後往前循環字符a,b;將兩值相加,並計算num和carry;每次將num加入ret
    最後判斷carry是否有餘值,並以字符形式返回
注意/難點:
    na
"""
class Solution:
    def addBinary(self, a: str, b: str) -> str:
        ret=[]                                            #初始化結果
        carry=0                                           #進位變量
        i,j=len(a)-1,len(b)-1                             #指針變量
        while i>=0 or j>=0:
            tmpSum=carry                                 #累計值
            if i>=0:
                tmpSum+=int(a[i])                        #+a的值
            if j>=0:
                tmpSum+=int(b[j])                        #+b的值
            num=tmpSum%2                                 #當前位的值
            carry=tmpSum//2                              #進位值
            ret.append(num)                              #結果記入ret
            i-=1                                         #指針後移
            j-=1
        if carry>0:                                     #判斷最後是否有進位值
            ret.append(carry)
        return ''.join(map(str,ret[::-1]))              #返回結果=字符串

# a = "11"
# b = "1"
a = "1010"
b = "1011"
ans=Solution().addBinary(a,b)
print(ans)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章