class Solution {
public int maxFreq(String s, int maxLetters, int minSize, int maxSize) {
int n = s.length();//字符串长度
if(n < minSize)
return 0;
int[] count = new int[26];//滑动窗口中每个字符出现的次数
int left = 0;
int right = 0;
int total = 0;
int ans = 0;
Map<String,Integer> map = new HashMap<>();
for(right = 0; right < minSize; right++){
count[s.charAt(right) - 'a'] += 1;
if(count[s.charAt(right) - 'a'] == 1)
total += 1;
}
for(right = minSize; right < n; right++){
if(total <= maxLetters){
String str = s.substring(left,right);
map.put(str,map.getOrDefault(str,0)+1);
ans = Math.max(ans,map.getOrDefault(str,0));
}
count[s.charAt(left) - 'a'] -= 1;
if(count[s.charAt(left) - 'a'] == 0)
total -= 1;
left += 1;
count[s.charAt(right) - 'a'] += 1;
if(count[s.charAt(right) - 'a'] == 1)
total += 1;
}
if(total <= maxLetters){
String str = s.substring(left,right);
map.put(str,map.getOrDefault(str,0)+1);
ans = Math.max(ans,map.getOrDefault(str,0));
}
return ans;
}
}