class Solution {
public:
int characterReplacement(string s, int k)
{
// 用一个数组来保存当前窗口内每个字符的最大的长度
vector<int> cnt (26,0);
// 滑动窗口的最左侧
int left = 0;
// 记录当前相同的单个字符的最大个数
int maxCharCnt = 0;
for (int right = 0; right < s.size(); ++right)
{
int charInt = s[right]-'A';
cnt[charInt]++;
maxCharCnt = max(maxCharCnt, cnt[charInt]);
// 当前窗口即使通过修改也无法满足了,那就要移动窗口left
if (right - left + 1 - maxCharCnt > k)
{
// 最左边字符
cnt[s[left]-'A']--;
left++;
}
// 否则left不变,移动right,窗口加大 1
}
return s.size() - left;
}
};