340 Longest Substring with At Most K Distinct Characters
Brute Force
vector<string> sub_str_sub(string s)
{
vector<string> substrings;
for (int i = 0; i < s.length(); i++) {
for (int j = 1; j <= s.length(); j++) {
substrings.push_back(s.substr(i, j));
}
break;
}
return substrings;
}
vector<vector<string>> all_substrings(string &s)
{
vector<vector<string>> all;
size_t size = s.length();
for (int i = 0; i < s.length(); i++) {
all.push_back(sub_str_sub(s.substr(i, size--)));
}
return all;
}
int is_k_distinct(string &s, int k)
{
unordered_set<char> unique_m;
for (int i = 0; i < s.length(); i++) {
unique_m.insert(s[i]);
if (unique_m.size() > k) return false;
}
return true;
}
int lengthOfLongestSubstringKDistinct(string s, int k)
{
int maxx = 0;
vector<vector<string>> substrings = all_substrings(s);
for (int i = 0; i < substrings.size(); i++) {
for (int j = 0; j < substrings[i].size(); j++) {
if (is_k_distinct(substrings[i][j], k))
maxx = max(maxx, (int)substrings[i][j].length());
}
}
return maxx;
}Last updated