424. 替换后的最长重复字符
分类:滑动窗口
class Solution {
public:
int characterReplacement(string s, int k) {
int mostCharCnt = 0, left, right;
vector<int> cnt(26, 0); //用一个hash记录窗口内字符的出现次数
for(left=0, right=0; right<s.size(); right++){
int index = s[right]-'A';
mostCharCnt = max(mostCharCnt, ++cnt[index]); //记录窗口内单个字符出现的最多次数
if(right+1 - left > mostCharCnt+k){ //区间右移
cnt[s[left]-'A']--;
left++;
}
}
return s.size() - left; //因为区间不会收缩,所以遗留下来的区间长度就是最长那啥
}
};
2021/02/02