滑动窗口/C++
直接上答案滑动一下?
#include <iostream>
#include <string>
using namespace std;
int getMax(string& s, int m, char target){
int left = 0, right = 0; // 双指针
int ans = 0, cnt = 0;
int n = s.size();
while(right<n){
if(s[right]==target){
right++;
}
else{
// 如果cnt<m,说明还可以继续翻转,此时将其当作'a'继续处理~
cnt++;
right++;
// 要开始考虑left的收缩了
while(cnt>m){
if(s[left]!=target){
cnt--;
}
left++;
}
}
// 这里我没有想到更好的,只能在每次while循环时候都判断一下
ans = max(ans, right-left);
}
return ans;
}
int main(){
int n, m;
string str;
cin >> n >> m;
cin >> str;
if(m>=n){
cout << n << endl;
}
// acm的输入输出真的搞得很懵
else{
int ans = 0;
ans = max(getMax(str, m, 'a'), getMax(str, m, 'b'));
cout << ans << endl;
}
return 0;
}