题目浅析

  • 想查看原题可以点击题目链接

  • 简单地说,就是给一个由 T 和 F 组成的字符串和一个整数 K,可以对整个字符串做最多 K 次的反转(T<->F),求反转后最长的连续 T 或 F 串长度。

思路分享

代码解答(强烈建议自行解答后再看)

  • 陆爻齐的原始解法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
class Solution {
public:
int maxConsecutiveAnswers(string answerKey, int k) {
int max_true = 0, max_false = 0, left = 0;
int cur_true = 0, cur_false = 0;
int n = answerKey.size();
for (int i = 0; i < n; i++) {
if (answerKey[i]=='T') {
cur_true++;
}
else {
cur_false++;
}

while(cur_false > k) {
if (answerKey[left++]=='T') {
cur_true--;
}
else {
cur_false--;
}
}

max_true = max(i-left+1, max_true);
}
cur_true = 0, cur_false = 0, left = 0;
for (int i = 0; i < n; i++) {
if (answerKey[i]=='T') {
cur_true++;
}
else {
cur_false++;
}

while(cur_true > k) {
if (answerKey[left++]=='T') {
cur_true--;
}
else {
cur_false--;
}
}

max_false = max(i-left+1, max_false);
}

return max(max_true, max_false);
}
};