20210202 每日一题
思路:一维的滑窗,考虑从左到右滑动,一旦不符合条件的时候,从左收缩窗口大小。
困惑:后面看了一下官方题解,为什么答案可以在外面维护,直接返回。
代码:
class Solution {
public:
int characterReplacement(string s, int k) {
int maxn = 1;
int left=0;
int right=0;
int num[26];
int ans=0;
memset(num,0,sizeof(num));
while(right<s.length()){
num[s[right]-'A']++;//扫描记录出现个数
maxn=max(maxn,num[s[right]-'A']);//找一下当前出现的最大的数
if(right-left+1-maxn>k){
num[s[left]-'A']--;
left++;
}
ans=max(ans,right-left+1);
right++;
}
return ans;
}
};