📌  相关文章
📜  给定二进制字符串中仅包含 1 的 K 长度子数组的计数 |设置 2(1)

📅  最后修改于: 2023-12-03 14:56:53.244000             🧑  作者: Mango

给定二进制字符串中仅包含 1 的 K 长度子数组的计数 |设置 2

本题要求实现一个函数,统计给定二进制字符串中长度为 K 的子数组中,仅包含 1 的子数组个数。

思路

遍历字符串,使用双指针维护一个长度为 K 的子数组的左右端点,通过判断子数组中 0 的个数来判断是否为符合条件的子数组。

代码实现
def count_k_length_subarrays(binary_string: str, k: int) -> int:
    count = 0
    left, right = 0, k - 1
    while right < len(binary_string):
        if binary_string.count('0', left, right + 1) == 0:
            count += 1
        left += 1
        right += 1
    return count
测试样例

例如:

assert count_k_length_subarrays("1010101", 2) == 2
复杂度分析

时间复杂度: $O(nk)$

空间复杂度: $O(1)$