标签:put return ring length 必须 code ash 维护 get
给你一个字符串?s ,请你返回满足以下条件且出现次数最大的?任意?子串的出现次数:
子串中不同字母的数目必须小于等于 maxLetters 。
子串的长度必须大于等于?minSize 且小于等于?maxSize 。
示例 1:
输入:s = "aababcaab", maxLetters = 2, minSize = 3, maxSize = 4
输出:2
解释:子串 "aab" 在原字符串中出现了 2 次。
它满足所有的要求:2 个不同的字母,长度为 3 (在 minSize 和 maxSize 范围内)。
class Solution {
public int maxFreq(String s, int maxLetters, int minSize, int maxSize) {
Map<String,Integer> map = new HashMap<>();
for(int i=0;i+minSize<=s.length();++i){
String subStr= s.substring(i,i+minSize);
if(isVaild(subStr,maxLetters)){
map.put(subStr,map.getOrDefault(subStr,0)+1);
}
}
int max = 0;
for(String str: map.keySet()){
int cnt = map.get(str);
if(cnt>max)max=cnt;
}
return max;
}
private boolean isVaild(String s,int maxLetters){
Set<Character> set = new HashSet<>();
for(char c: s.toCharArray()){
set.add(c);
}
return set.size()<=maxLetters;
}
}
标签:put return ring length 必须 code ash 维护 get
原文地址:https://www.cnblogs.com/coding-gaga/p/12932491.html