
题解:
- int[] memory 来记录当前窗口中字符的数量,后面随着窗口移动要更新
- curMaxCount 记录当前窗口最多数量的字符的数量
- 判断窗口是否向前滑动:窗口大小 > 最多字符数量 + 可替换数量,即:end - start + 1 > curMaxCount + k
class Solution {
private int[] memory = new int[26];
public int characterReplacement(String s, int k) {
int start = 0, res = 0, curMaxCount = 0;
int len = s.length();
for (int end = 0; end < len; end++) {
curMaxCount = Math.max(curMaxCount, ++memory[s.charAt(end) - 'A']);
while (end - start + 1 > curMaxCount + k) {
memory[s.charAt(start) - 'A']--;
start++;
}
res = Math.max(res, end - start + 1);
}
return res;
}
}