1297. 子串的最大出现次数
给你一个字符串 s ,请你返回满足以下条件且出现次数最大的 任意 子串的出现次数:
子串中不同字母的数目必须小于等于 maxLetters 。
子串的长度必须大于等于 minSize 且小于等于 maxSize 。
示例 1:
输入:s = “aababcaab”, maxLetters = 2, minSize = 3, maxSize = 4
输出:2
解释:子串 “aab” 在原字符串中出现了 2 次。
它满足所有的要求:2 个不同的字母,长度为 3 (在 minSize 和 maxSize 范围内)。
示例 2:
输入:s = “aaaa”, maxLetters = 1, minSize = 3, maxSize = 3
输出:2
解释:子串 “aaa” 在原字符串中出现了 2 次,且它们有重叠部分。
示例 3:
输入:s = “aabcabcab”, maxLetters = 2, minSize = 2, maxSize = 3
输出:3
示例 4:
输入:s = “abcde”, maxLetters = 2, minSize = 3, maxSize = 3
输出:0
暴力循环,加set去重,
class Solution {
public:
int maxFreq(string s, int maxLetters, int minSize, int maxSize) {
int res = 0;
map<string, int> hash;
for(int len = minSize; len <= minSize; len ++){
for(int i = 0; i < s.size() - len + 1; i ++){
string son = s.substr(i, len);
if(getLetters(son) <= maxLetters){
hash[son] ++;
}
}
}
auto it = hash.begin();
while(it != hash.end()){
res = max(res, it->second);
it ++;
}
return res;
}
int getLetters(string son){
set<char> hash;
for(auto s:son){
hash.insert(s);
}
return hash.size();
}
};