Loading...
Submission
# When Author Problem Language CPU Memory
20859 2024-06-12 23:54:34 AHAMMED_99 Min Substring C++ 14 55 ms 4224 kb Accepted
Test Cases
# CPU Memory Points
1 1 ms 3252 kb 1 Accepted
2 1 ms 3468 kb 1 Accepted
3 1 ms 3428 kb 1 Accepted
4 1 ms 3336 kb 1 Accepted
5 55 ms 4176 kb 1 Accepted
6 35 ms 4188 kb 1 Accepted
7 55 ms 4208 kb 1 Accepted
8 37 ms 4092 kb 1 Accepted
9 55 ms 4180 kb 1 Accepted
10 55 ms 4224 kb 1 Accepted
11 37 ms 4076 kb 1 Accepted
12 55 ms 4080 kb 1 Accepted
13 37 ms 4088 kb 1 Accepted
14 2 ms 3376 kb 1 Accepted
15 2 ms 3284 kb 1 Accepted
16 2 ms 3336 kb 1 Accepted
17 2 ms 3344 kb 1 Accepted
18 1 ms 3428 kb 1 Accepted
Source Code
  1. #include <iostream>
  2. #include <unordered_map>
  3. #include <unordered_set>
  4. #include <string>
  5. #include <climits>
  6.  
  7. using namespace std;
  8.  
  9. int minSubstringWithAllUniqueChars(const string& s) {
  10. int n = s.length();
  11. unordered_set<char> uniqueChars(s.begin(), s.end()); // Get all unique characters in the string
  12. int required = uniqueChars.size(); // Number of unique characters needed in the substring
  13.  
  14. unordered_map<char, int> windowCounts;
  15. int left = 0, right = 0, formed = 0;
  16. int minLength = INT_MAX;
  17.  
  18. while (right < n) {
  19. char c = s[right];
  20. windowCounts[c]++;
  21.  
  22. if (windowCounts[c] == 1) { // If this character is part of the required unique characters
  23. formed++;
  24. }
  25.  
  26. while (left <= right && formed == required) {
  27. // Update the minimum length
  28. minLength = min(minLength, right - left + 1);
  29.  
  30. char leftChar = s[left];
  31. windowCounts[leftChar]--;
  32. if (windowCounts[leftChar] == 0) {
  33. formed--;
  34. }
  35. left++;
  36. }
  37. right++;
  38. }
  39.  
  40. return minLength;
  41. }
  42.  
  43. int main() {
  44. string s;
  45. cin >> s;
  46. cout << minSubstringWithAllUniqueChars(s) << endl;
  47. return 0;
  48. }
  49.