(1) 滑动窗口。 most +k 最大,如果比这个值大,需要left++;
(2) 关键是维护一个most的最大值。
class Solution {
public:
int characterReplacement(string s, int k) {
if(s.size()<=k) return s.size();
vector<int> letter(26);
int l = 0;
int most = ++letter[s[0] - 'A'];
int res = 1;
for(int r = 1; r < s.size();r++)
{
most = max(most,++letter[s[r] - 'A']);
if(most + k < r - l + 1) // can't maintain this size of window
{
letter[s[l++]-'A']--;
}
res = max(res,r-l+1);
}
return res;
}
};