High school student Vasya got a string of length n as a birthday present. This string consists of letters 'a' and 'b' only. Vasya denotes beauty of the string as the maximum length of a substring (consecutive subsequence) consisting of equal letters.
Vasya can change no more than k characters of the original string. What is the maximum beauty of the string he can achieve?
The first line of the input contains two integers n and k (1 ≤ n ≤ 100 000, 0 ≤ k ≤ n) — the length of the string and the maximum number of characters to change.
The second line contains the string, consisting of letters 'a' and 'b' only.
Print the only integer — the maximum beauty of the string Vasya can achieve by changing no more than k characters.
4 2
abba
4
8 1
aabaabaa
5
In the first sample, Vasya can obtain both strings "aaaa" and "bbbb".
In the second sample, the optimal answer is obtained with the string "aaaaabaa" or with the string "aabaaaaa".
题目链接:http://codeforces.com/contest/676/problem/C
题目大意:一个字符串只包含a和b,可以改变其中k个,求最大的美丽值,美丽值定义为子串中所含字符均相同的的最长子串的长度
题目分析:显然对于k次操作,要么全换a要么全换b,对这两种情况取最大即可,算的时候用两点法,r向右直到k用完,然后l从左开始加,不断还原k值
#include <cstdio>
#include <algorithm>
using namespace std;
int const MAX = 1e5 + 5;
char s[MAX];
int n, k;
int cal(char x)
{
int l = 0, r = 0, ans = 0, cnt = 0;
while(l < n && r < n)
{
while((s[r] == x || cnt < k) && r < n)
{
if(s[r] != x)
cnt ++;
r ++;
}
ans = max(ans, r - l);
while(s[l] == x && l <= r)
l ++;
l ++;
cnt --;
}
return ans;
}
int main()
{
scanf("%d %d", &n, &k);
scanf("%s", s);
printf("%d\n", max(cal('a'), cal('b')));
}