给你一个仅由大写英文字母组成的字符串,你可以将任意位置上的字符替换成另外的字符,总共可最多替换 k 次。在执行上述操作后,找到包含重复字母的最长子串的长度。
注意:字符串长度 和 k 不会超过 104。
示例 1:
输入:s = “ABAB”, k = 2
输出:4
解释:用两个’A’替换为两个’B’,反之亦然
代码
class Solution {public int characterReplacement(String s, int k) {int[] cnt=new int[26];int l=0,r=0,maxn=0;while (r<s.length()){cnt[s.charAt(r)-'A']++;maxn= Math.max(maxn,cnt[s.charAt(r)-'A']);//维护最大出现次数if(r-l+1-maxn>k)//检查滑动窗口里面的元素是否合法{cnt[s.charAt(l)-'A']--;l++;}r++;}return r-l;}
}