题目大意:
给你一个只含‘a’ ‘ b ’ 的字符串,问不超过k次替换(‘a’换成‘b’,‘b’换成‘a’)可以产生的
最长连续且字符都相同的子串的长度是多少。“裸的”尺取。
#include<bits/stdc++.h>
using namespace std;
const int maxn=100005;
char s[maxn];
int a[maxn];
int n,k;
int work(){
int s=0,t=0,ans=0;
int cnt=0;
while( s<=t ){
while( cnt<=k &&t<n ){
if( a[t]==0 ){
cnt++;
}
if(cnt<=k)
ans=max( ans,t-s+1 );
t++;
}
if( a[s]==0 )cnt--;
s++;
}
return ans;
}
int main()
{
scanf("%d%d",&n,&k);
scanf("%s",s);
for(int i=0;i<n;i++){
a[i]=s[i]-'a';
}
int ans1=work();
for(int i=0;i<n;i++)a[i]=a[i]?0:1;
int ans2=work();
printf("%d\n",max(ans1,ans2));
return 0;
}