📅  最后修改于: 2023-12-03 14:57:33.802000             🧑  作者: Mango
给定一个二进制字符串,计算其中由“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为原始字符串的长度。