题目描述
- 有一个仅包含a和b两种字符的字符串s,长度为n,每次操作可以把一个字符做一次转换(把一个a设置为b,或者把一个b置成a);但是操作的次数有上限m,问在有限的操作数范围内,能够得到最大连续的相同字符的子串的长度是多少。
输入描述
- 第一行两个整数 n , m (1<=m<=n<=50000),第二行为长度为n且只包含a和b的字符串s。
输出描述
示例
输入
1 | 8 1 |
输出
1 | 5 |
分析(以翻转a为例)
- 翻转的操作次数为m,如果可以找出包含m个a的最长连续子串,然后将m个a翻转,即为本题的答案。
- 将a的下标组成新的数组array,则包含m个a连续序列的长度为 array[i+m]-array[i-1]-1;
- 如果这m个a中包含序列中的第一个或者最后一个a,那么,连续序列的长度为 array[i+m]-array[i-1];
代码如下:
1 |
|
