int longestSubstring(string s, int k) { if (s=="") return 0; unordered_map<char,int>Map; for (int i=0; i<s.size(); i++) Map[s[i]]++; unordered_set<char>Set; for (auto a:Map) { if (a.second>=k) Set.insert(a.first); } if (Set.size()==Map.size()) return s.size(); int result=0; for (int i=0; i<s.size(); i++) { int i0=i; while (i<s.size() && Set.find(s[i])!=Set.end()) i++; result = max(result, longestSubstring(s.substr(i0,i-i0),k)); } return result; }
int longestSubstring(string s, int k) { if (k <= 1) return s.size(); unordered_map<char, int> myMap; for (char c : s) myMap[c]++; int n = s.size(), ret = 0, cur = 0, i = 0; for (i = 0; i < n; i++) { if (myMap[s[i]] < k) break; } if (i == n) return s.size(); ret = max(longestSubstring(s.substr(0, i), k), longestSubstring(s.substr(i + 1), k)); return ret; }
int longestSubstring(string s, int k) { if (s.size() < k) return 0; int result = s.size(); vector<int> chars(26, 0); for (int i = 0; i < s.size(); i++) { chars[s[i] - 'a']++; } int i; for (i = 0; i < s.size(); i++) { if (chars[s[i] - 'a'] < k) { break; } } if (i == s.size()) return s.size(); return max(longestSubstring(s.substr(0, i), k), longestSubstring(s.substr(i + 1), k)); }
int longestSubstring(string s, int k) { if(s.size() < k) return 0; int c[200] = {0}; for(char i : s) ++c[i]; int len = s.size(); for(int i = 0; i < len; ++i) { if(c[s[i]] && c[s[i]] < k) { string l = s.substr(0, i); string r = s.substr(i+1); return max(longestSubstring(l,k),longestSubstring(r,k)); } } return len; }
int longestSubstring(string s, int k) { if (k > (int)s.size()) { return 0; } vector<int> cnt(26, 0); for (int i = 0; i < (int)s.size(); ++i) ++cnt[s[i] - 'a']; int mn = INT_MAX; for (int i = 0; i < 26; ++i) { if (cnt[i] > 0) mn = min(cnt[i], mn); } if (mn >= k) return s.size(); int pv = 0; int res = 0; for (int i = 0; i < (int)s.size(); ++i) { if (cnt[s[i] - 'a'] < k) { res = max(res, longestSubstring(s.substr(pv, i - pv), k)); pv = i + 1; } } res = max(res, longestSubstring(s.substr(pv, s.size() - pv), k)); return res; }
int longestSubstring(string s, int k) { //deal with edge cases if (s.size() == 0 || s.size() < k) return 0; if (k==1) return s.size(); //declare a map for every char's counter int count[NO_OF_CHARS]; memset(count , 0, sizeof(count)); //counting every char for (char ch : s) { count[ch]++; } int i=0; for ( i=0; i<NO_OF_CHARS; i++) { if (count[i] !=0 && count[i] < k) break; } //all of the chars meet the requirement if ( i >= NO_OF_CHARS ) return s.size(); // find the most infrequent char char least = 0; for (int c = 0; c < NO_OF_CHARS; c++) { if (count[c] == 0) continue; if (least == 0) { least = c; } else if ( count[c] < count[least]) { least = c; } } //split the string and run them recursively vector<string> subs; split(s, least, subs); int res = 0; for (string str: subs) { res = max(res, longestSubstring(str, k)); } return res; return 0; }