首页 > 解决方案 > 如何检查 1 后面是否总是跟着 0

问题描述

Python中,我找不到关于如何确定数字列表中某处的 1 后面是否总是有 0 以形成一对10的解决方案。它不一定是直接追随者。

为清楚起见,我指的是(某种)二进制数中的“列表”,具体而言,

1100  #pass
1001  #fail
1010  #pass
0101  #fail

11110000  #pass
11100001  #fail

11100100  #pass

在 0 之前必须总是有相同数量的 1。提前致谢。

标签: pythonpython-3.xlistbinary

解决方案


保留一个临时变量,初始化为0. 为 each 增加它1,否则减少它。它永远不应该是负数,并且为了确保有尽可能多10,它应该等于0最后。

def check(bits):
    temp = 0
    for bit in bits:
        if temp < 0:
            return False
        if int(bit) == 1:
            temp += 1
        else:
            temp -= 1
    return temp == 0

举个例子:

>>> check('1100')
True
>>> check('110001')
False
>>> check('1')
False
>>> check('10')
True
>>> check('1010')
True
>>> check('123')
False

推荐阅读