class Solution {
public:
int characterReplacement(string s, int k) {
int N = s.length();
int mp[30];
memset(mp,0,sizeof(mp));
int ans = 0;
int L = 0;
for(int R=0;R<N;R++){
mp[s[R]-'A'] ++ ;
for(;L<=R;L++){
int mx = 0;
for(int i=0;i<26;i++) mx = max(mx,mp[i]);
if(R-L+1-mx<=k){
ans = max(ans,R-L+1);
break;
}else mp[s[L]-'A'] -- ;
}
}
return ans;
}
};
No.97 - LeetCode424 - 替换K个字符最大重复子串 - 统计字符滑动窗口
本文介绍了一种高效的字符串替换算法,该算法通过使用滑动窗口和字符计数数组来找到最多k次替换下最长的相同字符子串。算法首先初始化计数数组和滑动窗口的左边界,然后遍历字符串,更新字符计数并检查是否满足k次替换条件。如果满足,更新最长子串长度;如果不满足,则调整窗口左边界。

被折叠的 条评论
为什么被折叠?



