1297. Maximum Number of Occurrences of a Substring
シンプルではあるが難しい
class Solution { public: int maxFreq(string s, int maxLetters, int minSize, int maxSize) { unordered_map<char, int> m; //文字種類数 unordered_map<string, int> subs; int j=0; for(int i= 0; i< s.size(); i++){ m[s[i]]++; //現在のsubstringのサイズ int currSize = i-j+1; while(m.size() > maxLetters || currSize > minSize) { int start = j; m[s[j]]--; if(m[s[j]] == 0){ m.erase(s[j]); } j++; currSize--; } //現在のsubstringのサイズがminSize以上なら候補として保存 if(currSize >= minSize) { subs[ s.substr(j, currSize) ]++; } } int maxc = 0; for(auto it = subs.begin(); it != subs.end(); it++) { maxc = max( maxc, it->second); } return maxc; } };