用滑动窗口,细节就是right -left +1 -maxlen 这个来表示里面除了相同元素的其他的数量。用这个来跟k比较然后推动窗口滑动。大于了的话,left++。小于或者等于k,说明k次替换就行了呗。
class Solution {
public int characterReplacement(String s, int k) {
int left = 0;
int right = 0;
int maxLen = -1;
char[] chars = new char[26];
while(right < s.length()){
char c = s.charAt(right);
chars[c - 'a' + 32]++;
maxLen = Math.max(maxLen,chars[c-'a'+32]);
if((right - left + 1 - maxLen) > k){
chars[s.charAt(left) - 'A']--;
left++;
chars[s.charAt(right) - 'A']--;
}else{
right++;
}
}
return right-left;
}
}