题目
有一个长度为 n 的 01 串,其中有一些位置标记为 ?
,这些位置上可以任意填充 0
或者 1
,请问如何填充这些位置使得这个 01 串中出现互不重叠的 00
和 11
子串最多,输出子串个数。
输入格式
输入一行包含一个字符串。
输出格式
输出一行包含一个整数表示答案。
数据范围
对于所有评测用例,1≤n≤106
输入样例:
yaml
1110?0
输出样例:
2
样例解释
如果在问号处填 0
,则最多出现一个 00
和一个 11
:111000
代码与思路
这道题没什么需要讲的特别思路,就是要想到前后字符相等
java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String s = in.next();
int res = 0;
for (int i = 0;i < s.length() - 1;i ++) {
char a = s.charAt(i), b = s.charAt(i + 1);
if (a == b || a == '?' || b == '?') {
res ++;
i++;
}
}
System.out.println(res);
}
}