"""
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)