0
点赞
收藏
分享

微信扫一扫

【LeeCode】2024. 考试的最大困扰度

一叶轻舟okok 2023-02-27 阅读 76

【题目描述】

一位老师正在出一场由 ​​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/​​


【示例】

【LeeCode】2024. 考试的最大困扰度_java


【代码】admin

思路:双指针  ​​【LeeCode】424. 替换后的最长重复字符​​

package com.company;
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
}
}

举报

相关推荐

0 条评论