# 2024. Maximize the Confusion of an Exam ###### tags: `Leetcode` `Medium` `Sliding Window` Link: https://leetcode.com/problems/maximize-the-confusion-of-an-exam/ ## 思路 ### 思路一 $O(N)$ $O(1)$ 两次sliding window,一次替换F,一次替换T ### 思路二 $O(N)$ $O(1)$ 参考[0424. Longest Repeating Character Replacement](https://hackmd.io/2OqRR7LlQq2TK0NEfLqhHw) ## Code ### 思路一 ```java= class Solution { public int maxConsecutiveAnswers(String answerKey, int k) { return Math.max(count(answerKey, k, 'T'), count(answerKey, k, 'F')); } private int count(String answerKey, int k, char ch){ int maxLen = 0; int count = 0; int l = 0, r = 0; while(r < answerKey.length()){ if(answerKey.charAt(r)==ch) count++; if(count > k){ while(l<r && count>k){ if(answerKey.charAt(l++)==ch){ count--; } } } maxLen = Math.max(maxLen, r-l+1); r++; } return maxLen; } } ``` ### 思路二 ```java= class Solution { public int maxConsecutiveAnswers(String answerKey, int k) { int[] count = new int[2]; int l = 0, r = 0; int maxCnt = 0; int maxLen = 0; while(r<answerKey.length()){ maxCnt = Math.max(maxCnt, ++count[answerKey.charAt(r)=='T'?0:1]); if(r-l+1-maxCnt>k){ count[answerKey.charAt(l++)=='T'?0:1]--; } maxLen = Math.max(maxLen, r-l+1); r++; } return maxLen; } } ```