public static int maxConsecutiveAnswers(String answerKey, int k) { int n=answerKey.length(); int[] num=new int[2];//第一个为T的数量,第二个为F的数量 int l=0;//左右指针 int r=0; int max=0; while (r<n){ //计数 if(answerKey.charAt(r)=='T') num[0]++; if(answerKey.charAt(r)=='F') num[1]++; //当两个字符数量都大于k时,其中一个为k+1,此时计算长度 if(num[0]>k&&num[1]>k){ //在[l,r-1]中只有一种字符为k个,范围内所有字符都可变为同一种 max=Math.max(max,r-l); //移动左指针,直到其中一种字符变为k个 while (l<r){ if(num[0]==k||num[1]==k) break; if(answerKey.charAt(l)=='T') num[0]--; if(answerKey.charAt(l)=='F') num[1]--; l++; } }else if(r==n-1) //当走到最后一位时,如果仍不满足上面情况,说明[l,r]内必有一种字符<=k,可变为同一种 max=Math.max(max,r-l+1); r++; } return max; }