High school student Vasya got a string of length n as a birthday present. This string consists of letters 'a' and 'b' only. Vasya denotesbeauty 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".
题解:
有一个长度为n的字符串,这个字符串只含有a和b,你可以改变最多k次,问你连续最长的一样的字符串是多长?
从头到尾都遍历-->枚举-->改变 ,贪心最长度。 有点像二分
AC代码:
#include<bits/stdc++.h>
using namespace std;
const int N = 1e5+10;
int n,k;
int f(string s)
{
int l=0,r=-1;
int num=0;
int res=0;
while(++r<s.size())
{
if(s[r]=='b')
num++;
if(num>k)
{
while(s[l++]=='a');
num--;
}
res=max(res,r-l+1);
}
return res;
}
int main()
{
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
string s;
cin>>n>>k;
cin>>s;
int ans=f(s);
for(int i=0;i<s.size();i++)
s[i]='a'+'b'-s[i];
ans=max(ans,f(s));
cout<<ans<<endl;
return 0;
}