python - 如何检查 1 后面是否总是跟着 0
问题描述
在Python中,我找不到关于如何确定数字列表中某处的 1 后面是否总是有 0 以形成一对10的解决方案。它不一定是直接追随者。
为清楚起见,我指的是(某种)二进制数中的“列表”,具体而言,
1100 #pass
1001 #fail
1010 #pass
0101 #fail
11110000 #pass
11100001 #fail
11100100 #pass
在 0 之前必须总是有相同数量的 1。提前致谢。
解决方案
保留一个临时变量,初始化为0
. 为 each 增加它1
,否则减少它。它永远不应该是负数,并且为了确保有尽可能多1
的0
,它应该等于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
推荐阅读
- javascript - 在 webView Android Studio 中执行按钮单击
- excel - 从剪贴板粘贴适用于某些人而不适用于其他人
- node.js - 如何在 fastify 中使用 node-sspi
- python - Python 调用创建目录的函数无法按预期工作
- reactiveui - 从 IActivatableViewModel 中的 WhenActivated 调用异步方法
- python - 多处理:使用进程列表而不是池映射函数
- excel - 获取触发宏的单元格的单元格值(例如 A6)
- javascript - Bootstrap 4 导航栏折叠时无法更改 div 的填充(移动)
- html - 如何在jquery中提取元素的递增id
- tableau-api - Tableau 详细程度问题。我不知道为什么我的解决方案得到错误的结果