游游的字符串中好子串数量计算方法及Java代码实现
要解决这个问题,我们可以使用动态规划的方法。首先,我们需要创建一个布尔数组 dp,其中 dp[i] 表示字符串从索引 i 开始的子串是否是好子串。然后,我们遍历字符串,对于每个字符,我们检查它前面的所有子串,如果在某个位置上,0 的数量大于 1 的数量,那么我们就更新 dp[i] 为 true。最后,我们统计 dp 数组中 true 的个数,即为所求的好子串个数。
以下是详细的 Java 代码:
```java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String input = sc.nextLine();
System.out.println(countGoodSubstrings(input));
}
public static int countGoodSubstrings(String input) {
int n = input.length();
boolean[] dp = new boolean[n];
dp[0] = (input.charAt(0) == '0');
for (int i = 1; i < n; i++) {
if (input.charAt(i) == '0') {
dp[i] = (i > 0 && dp[i - 1]) || (i > 1 && !dp[i - 2]);
} else {
dp[i] = (i > 0 && !dp[i - 1]) || (i > 1 && dp[i - 2]);
}
}
int count = 0;
for (boolean b : dp) {
count += b ? 1 : 0;
}
return count;
}
}
```
这段代码首先读取输入的字符串,然后调用 countGoodSubstrings 方法计算好子串的个数,并输出结果。
免责声明:
以上内容除特别注明外均来源于网友提问,创作工场回答,未经许可,严谨转载。