填充

1.题目

有一个长度为 n的 0101 串,其中有一些位置标记为 ?,这些位置上可以任意填充 0 或者 1,请问如何填充这些位置使得这个 0101 串中出现互不重叠的 0011 子串最多,输出子串个数。

输入格式

输入一行包含一个字符串。

输出格式

输出一行包含一个整数表示答案。

数据范围

对于所有评测用例,1≤n≤1061。

输入样例:

1
1110?0

输出样例:

1
2

样例解释

如果在问号处填 0,则最多出现一个 00 和一个 11111000

2.思路

简单来说,相邻的两个数字如果相同可以配对成功,1个数只能配对一次,如果是?,既可以和1配对,也可以和0配对。

根据观察可以看出,从左到右数,如果能配对则先配对,这样配对的数是最大的。这样从左循环到右边每个i都和i+1项目进行匹配,匹配成功后i++(for循环自带i++,所以相当于加两次,这样i+1就跳过和i+2的匹配了)result ++;这样的得出的result就是结果值。