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
#include <iostream> #include <unordered_map> #include <unordered_set> #include <string> #include <climits> using namespace std; int minSubstringWithAllUniqueChars(const string& s) { int n = s.length(); unordered_set<char> uniqueChars(s.begin(), s.end()); // Get all unique characters in the string int required = uniqueChars.size(); // Number of unique characters needed in the substring unordered_map<char, int> windowCounts; int left = 0, right = 0, formed = 0; int minLength = INT_MAX; while (right < n) { char c = s[right]; windowCounts[c]++; if (windowCounts[c] == 1) { // If this character is part of the required unique characters formed++; } while (left <= right && formed == required) { // Update the minimum length minLength = min(minLength, right - left + 1); char leftChar = s[left]; windowCounts[leftChar]--; if (windowCounts[leftChar] == 0) { formed--; } left++; } right++; } return minLength; } int main() { string s; cin >> s; cout << minSubstringWithAllUniqueChars(s) << endl; return 0; }