原始问题:
Java实现:统计长度为n且至少有k对相邻字母不同的非爆炸字符串数量
解析:首先,我们需要遍历字符串,计算相邻字符不同的对数。然后,根据给定的k值,判断是否满足不会爆炸的条件。最后,统计满足条件的字符串数量。
代码如下:
public class Main {
public static void main(String[] args) {
int n = 5;
int k = 2;
System.out.println(countNonExplodingStrings(n, k));
}
public static int countNonExplodingStrings(int n, int k) {
int[] lastChar = new int[26];
for (int i = 0; i < n; i++) {
char c = (char) ('a' + i);
if (lastChar[c - 'a'] == 0) {
lastChar[c - 'a'] = i;
} else {
int diff = i - lastChar[c - 'a'] - 1;
if (diff >= k) {
return i + 1;
} else {
lastChar[c - 'a'] = i;
}
}
}
return n;
}
}这段代码定义了一个名为countNonExplodingStrings的方法,接受两个参数:字符串长度n和允许的最大相邻不同字符对数k。方法返回满足条件的字符串数量。
Prev:爆炸,点关切仅当至少有k对相邻的字母不同。小红想知道长度为n的小写字母组成的字符串有多少字符串不会爆炸