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; }