题目:2024. 考试的最大困扰度
思路:双指针,只需要满足区间[l,r]之间T的个数或F的个数小于k。在此基础上找到最长的区间即可
class Solution {
public:
int maxConsecutiveAnswers(string answerKey, int k) {
int mx=0;
int l=0,r=0;
int ans=0;
for(;r<answerKey.size();r++){
if(answerKey[r]=='F') ans++;
while(ans>k){
if(answerKey[l]=='F'){
ans--;
l++;
break;
}
l++;
}
if(ans<=k) mx=max(mx,r-l+1);
}
l=0,r=0,ans=0;
for(;r<answerKey.size();r++){
if(answerKey[r]=='T') ans++;
while(ans>k){
if(answerKey[l]=='T'){
ans--;
l++;
break;
}
l++;
}
if(ans<=k) mx=max(mx,r-l+1);
}
return mx;
}
};