更多題目移步【力扣簡單題】
題目
難度:★☆☆☆☆
類型:數(shù)組
給定兩個二進(jìn)制字符串,返回他們的和(用二進(jìn)制表示)。
輸入為非空字符串且只包含數(shù)字 1 和 0。
示例
示例 1:
輸入: a = "11", b = "1"
輸出: "100"
示例 2:
輸入: a = "1010", b = "1011"
輸出: "10101"
解答
本題相當(dāng)于實現(xiàn):
class Solution:
def addBinary(self, a: str, b: str) -> str:
return bin(int(a,2)+int(b,2))[2:]
這里,我們將兩個字符串轉(zhuǎn)為相同長度,然后直接進(jìn)行字符串相加。
class Solution:
def addBinary(self, a: str, b: str) -> str:
# 短字符串前端補零,保證兩者長度相等
if len(a) > len(b):
b = '0'* (len(a)-len(b)) + b
elif len(a) < len(b):
a = '0'* (len(b) - len(a)) + a
res, carry = '', '0'
for a_, b_ in reversed(list(zip(a, b))):
if a_ == '0' and b_ == '0': # 當(dāng)前位兩個數(shù)都是0
r = carry
carry = '0'
elif a_ == '1' and b_ == '0' or a_ == '0' and b_ == '1': # 當(dāng)前位兩個數(shù)不同
r = '1' if carry == '0' else '0'
carry = '1' if carry == '1' else '0'
else: # 當(dāng)前位兩個數(shù)都是1
r = '1' if carry == '1' else '0'
carry = '1'
res = r + res
if carry == '1': # 如果還有進(jìn)位
res = '1' + res
return res
如有疑問或建議,歡迎評論區(qū)留言~