uzi视频网站谁做的,ps做网站连接,wordpress nginx apache,如何选择镇江网站建设一位老师正在出一场由 n 道判断题构成的考试#xff0c;每道题的答案为 true #xff08;用 ‘T’ 表示#xff09;或者 false #xff08;用 ‘F’ 表示#xff09;。老师想增加学生对自己做出答案的不确定性#xff0c;方法是最大化有连续相同结果的题数。#xff08;…一位老师正在出一场由 n 道判断题构成的考试每道题的答案为 true 用 ‘T’ 表示或者 false 用 ‘F’ 表示。老师想增加学生对自己做出答案的不确定性方法是最大化有连续相同结果的题数。也就是连续出现 true 或者连续出现 false。
给你一个字符串 answerKey其中 answerKey[i] 是第 i 个问题的正确结果。除此以外还给你一个整数 k表示你能进行以下操作的最多次数
每次操作中将问题的正确答案改为 ‘T’ 或者 ‘F’也就是将 answerKey[i] 改为 ‘T’ 或者 ‘F’。请你返回在不超过 k 次操作的情况下最大连续 ‘T’ 或者 ‘F’ 的数目。
示例 1
输入answerKey “TTFF”, k 2
输出4
解释我们可以将两个 ‘F’ 都变为 ‘T’得到 answerKey “TTTT”。
总共有四个连续的 ‘T’。 示例 2
输入answerKey “TFFT”, k 1
输出3
解释我们可以将最前面的 ‘T’ 换成 ‘F’得到 answerKey “FFFT”。
或者我们可以将第二个 ‘T’ 换成 ‘F’得到 answerKey “TFFF”。
两种情况下都有三个连续的 ‘F’。 示例 3
输入answerKey “TTFTTFTT”, k 1
输出5
解释我们可以将第一个 ‘F’ 换成 ‘T’得到 answerKey “TTTTTFTT”。
或者我们可以将第二个 ‘F’ 换成 ‘T’得到 answerKey “TTFTTTTT”。
两种情况下都有五个连续的 ‘T’。 提示
n answerKey.length
1 n 5 * 10^4
answerKey[i] 要么是 ‘T’要么是 ‘F’
1 k n
题解:
在指定字符的情况下我们可以计算其最大连续数目。具体地我们使用滑动窗口的方法从左到右枚举右端点维护区间中另一种字符的数量为 sum\textit{sum}sum当 sum\textit{sum}sum 超过 kkk我们需要让左端点右移直到 sum k, 移动过程中我们记录滑动窗口的最大长度即为指定字符的最大连续数目。
本题的答案为分别指定字符为 TTT 和 FFF 时的最大连续数目的较大值。
滑动窗口, 不多解释了
ac代码
class Solution {
public:int maxConsecutiveChar(string answerKey, int k, char ch) {int n answerKey.length();int ans 0;for (int left 0, right 0, sum 0; right n; right) {sum answerKey[right] ! ch;while (sum k) {sum - answerKey[left] ! ch;}ans max(ans, right - left 1);}return ans;}int maxConsecutiveAnswers(string answerKey, int k) {return max(maxConsecutiveChar(answerKey, k, T),maxConsecutiveChar(answerKey, k, F));}
};
觉得写的不错的话, 点个赞吧~