📌  相关文章
📜  计算由“11”组成的 N 长度二进制字符串作为子字符串(1)

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

计算由“11”组成的 N 长度二进制字符串作为子字符串

问题描述

给定一个二进制字符串,计算其中由“11”组成的 N 长度子字符串的个数。

例如,对于字符串“101110111”,当N=2时,存在{"11", "11", "11", "11", "11", "11", "11", "11"}这8个符合条件的子字符串,所以输出8。

思路分析

对于一个长度为N的二进制字符串,我们可以先枚举其中每一个长度为N的子字符串,然后统计其中由“11”组成的子字符串的数量。

具体而言,我们可以从左到右依次枚举每个长度为N的子字符串,并检查其中是否存在“11”子串。

代码实现

以下为Java语言实现的代码片段:

public static int countSubstrings(String s, int N) {
    int count = 0;
    for (int i = 0; i <= s.length() - N; i++) {
        String subString = s.substring(i, i + N);
        if (subString.contains("11")) {
            count++;
        }
    }
    return count;
}
示例测试

我们可以使用下面的示例代码进行测试:

String s = "101110111";
int N = 2;
int count = countSubstrings(s, N);
System.out.println("count = " + count);
// 输出结果:count = 8
时间复杂度

该算法的时间复杂度为O((L - N + 1) * N),其中L为原始字符串的长度。