2021-01-16 Python百日打卡学习自【夸可编程】

'''
题目
给你两个二进制字符串,返回它们的和(用二进制表示)。
例子

addBinary('11','1') -> '100'
addBinary('1010','1011') -> '10101'
假设

输入为 非空 字符串且只包含数字 1 和 0
tips

模拟加法运算
注意进位
'''

def addBinary(a, b):
res = ''
max_len = max(len(a), len(b))
a = a.zfill(max_len)
b = b.zfill(max_len)
# 先补齐
print(a, b)
carry = 0
for i in range(1, max_len+1):
# tmp = int(a[-i]) + int(b[-i]) + carry
# 进位
if a[-i] == '1':
carry += 1
if b[-i] == '1':
carry += 1
if carry % 2: # 有余数只有0 ,1
res = '1' + res
else:
res = '0' + res
carry = carry // 2
if carry != 0:
res = '1' + res
return res

s1 = '1010'
s2 = '10111'

print(addBinary(s1, s2))
print(addBinary('11', '1'))
print(addBinary('1010', '1011'))
print(addBinary('1000', '1000'))
print(addBinary('10001', '10001'))
print(addBinary('100100', '100110'))

你可能感兴趣的:(2021-01-16 Python百日打卡学习自【夸可编程】)