You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python统计二进制字符串中连续重复0/1的块数?

解决二进制字符串连续重复块统计问题

没问题,我来帮你搞定这个统计连续重复0/1块数的需求!下面分两种思路给你实现方案,简单易懂还高效。

思路一:手动遍历对比

这是最直观的方法,通过逐个字符和前一个对比来计数:

def count_consecutive_blocks(binary_str):
    # 处理空字符串的特殊情况
    if not binary_str:
        return 0
    # 非空字符串至少有1个块
    block_count = 1
    # 从第二个字符开始遍历
    for i in range(1, len(binary_str)):
        # 如果当前字符和前一个不同,说明进入新块
        if binary_str[i] != binary_str[i-1]:
            block_count += 1
    return block_count

# 测试你的示例
test_input = '01000110'
print(count_consecutive_blocks(test_input))  # 输出5

代码解释:

  • 先判断输入是否为空,避免后续遍历出错,空字符串直接返回0
  • 初始化计数器为1,因为只要字符串非空,至少存在一个连续块
  • 从索引1开始遍历每个字符,和前一个字符(索引i-1)比较,一旦发现不同就给计数器加1
  • 遍历完成后返回最终的块数

思路二:用itertools.groupby简化代码

Python的itertools.groupby天生就适合处理这种连续相同元素分组的场景,一行核心代码就能搞定:

from itertools import groupby

def count_consecutive_blocks(binary_str):
    # groupby会把连续相同的字符分成组,统计组数就是块数
    return len(list(groupby(binary_str)))

# 测试示例
print(count_consecutive_blocks('01000110'))  # 输出5

代码解释:

  • groupby(binary_str)会返回一个迭代器,每个迭代元素对应一组连续相同的字符
  • 把这个迭代器转成列表后,列表的长度就是我们要的连续块数量
  • 这个方法代码更简洁,可读性也很强,适合快速实现需求

两种方法都能完美解决你的问题,你可以根据自己的习惯选择使用~

内容的提问来源于stack exchange,提问作者Anotomica

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:55:57