fork download
  1.  
  2.  
  3. #include <iostream>
  4. #include <unordered_map>
  5. using namespace std;
  6.  
  7. int longestKSubstr(string s, int k)
  8. {
  9. int i = 0;
  10. int j = 0;
  11. int ans = -1;
  12. unordered_map<char, int> mp;
  13. while (j < s.size()) {
  14. mp[s[j]]++;
  15. while (mp.size() > k) {
  16. mp[s[i]]--;
  17. if (mp[s[i]] == 0)
  18. mp.erase(s[i]);
  19. i++;
  20. }
  21. if (mp.size() == k) {
  22. ans = max(ans, j - i + 1);
  23. }
  24. j++;
  25. }
  26. return ans;
  27. }
  28.  
  29. int main()
  30. {
  31. string s = "aabacbebebe";
  32. int k = 3;
  33. cout << longestKSubstr(s, k) << endl;
  34. return 0;
  35. }
Success #stdin #stdout 0s 5260KB
stdin
Standard input is empty
stdout
7