6)Longest K unique characters substring - (sliding window | variable size)

Given a string you need to print the size of the longest possible substring that has exactly K unique characters. If there is no possible substring then print -1.

Example 1:

Input:
S = "aabacbebebe", K = 3
Output: 7
Explanation: "cbebebe" is the longest 
substring with K distinct characters.

​Example 2:

Input: 
S = "aaaa", K = 2
Output: -1
Explanation: There's no substring with K
distinct characters.



c++ implementation:

 int longestKSubstr(string a, int k) 
    {
        int i=0;int j=0; int n=a.length();
     
        int len=-1;int count=0;
        map<char,int>map;
        while(j<n)
        {
            map[a[j]]++;
            if(map[a[j]]==1)
            count++;
        
            if(count==k)
            {
                len=max(len,j-i+1);
            }
            else if(count>k)
            {
                while(count>k)
                {
                    map[a[i]]--;
                    if(map[a[i]]==0)
                    count--;
                    
                    i++;
                }
                len=max(len,j-i+1);
            }
            j++;
        }
        return len;
    }
Time Complexity: O(n) 
space Complexity: O(n) 



No comments

darkmode