給你一個僅由大寫英文字母組成的字符串,你可以將任意位置上的字符替換成另外的字符,總共可最多替換 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;}
}