【题目描述】
一位老师正在出一场由 n
道判断题构成的考试,每道题的答案为 true (用 'T'
表示)或者 false (用 'F'
表示)。老师想增加学生对自己做出答案的不确定性,方法是 最大化 有 连续相同 结果的题数。(也就是连续出现 true 或者连续出现 false)。
给你一个字符串 answerKey
,其中 answerKey[i]
是第 i
个问题的正确结果。除此以外,还给你一个整数 k
,表示你能进行以下操作的最多次数:
- 每次操作中,将问题的正确答案改为
'T'
或者 'F'
(也就是将 answerKey[i]
改为 'T'
或者 'F'
)。
请你返回在不超过 k
次操作的情况下,最大 连续 'T'
或者 'F'
的数目。
https://leetcode.cn/problems/maximize-the-confusion-of-an-exam/
【示例】
【代码】admin
思路:双指针 【LeeCode】424. 替换后的最长重复字符
package com.company;标签:count,困扰,right,int,answerKey,2024,LeeCode,new,left From: https://blog.51cto.com/u_13682316/6089302
import java.util.*;
// 2023-2-27
class Solution {
public int maxConsecutiveAnswers(String answerKey, int k) {
int len = answerKey.length();
int res = 0;
int left = 0;
int right = 0;
int count = 0;
int[] nums = new int[26];
while (right < len){
nums[answerKey.charAt(right) - 'A']++;
count = Math.max(count, nums[answerKey.charAt(right) - 'A']);
if (right - left + 1 - count > k){
nums[answerKey.charAt(left) - 'A']--;
left++;
}
right++;
}
System.out.println(right - left);
return res;
}
}
public class Test {
public static void main(String[] args) {
new Solution().maxConsecutiveAnswers( "TTFF", 2); // 输出: 4
new Solution().maxConsecutiveAnswers( "TTFF", 1); // 输出: 3
new Solution().maxConsecutiveAnswers( "TTFTTFTT", 1); // 输出: 5
}
}