计算列表中两个或多个连续1的块数

def count_consecutive_ones(input_list):
    count = 0
    in_block = False  # 标记是否处于一个块中
    n = len(input_list)
    
    for i in range(n):
        if input_list[i] == 1:
            # 如果当前是1,并且下一个也是1,则开始一个块
            if i + 1 < n and input_list[i + 1] == 1:
                if not in_block:
                    in_block = True  # 标记进入块
            else:
                # 如果当前是1,但下一个不是1,且之前处于块中,则结束块
                if in_block:
                    count += 1
                    in_block = False  # 标记退出块
        else:
            # 如果当前是0,且之前处于块中,则结束块
            if in_block:
                count += 1
                in_block = False
    
    # 处理列表末尾的情况
    if in_block:
        count += 1
    
    return count

# 获取输入, 转换为列表
input_list = list(map(int, input().split()))
# 调用函数
print(count_consecutive_ones(input_list))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值