


You are given ‘str’ = ‘abbbbbbc’ and ‘K’ = 2, then the substrings that can be formed are [‘abbbbbb’, ‘bbbbbbc’]. Hence the answer is 7.
The first line of input contains the integer ‘T’ representing the number of test cases.
The first line of each test case contains one integer, ‘K’, representing the maximum number of unique characters allowed in the string.
The second line of each test case contains a single string ‘str’ representing the given string.
For each test case, print a single integer representing the length of largest substring that can be formed with at most ‘K’ unique characters.
Print a separate line for each test case.
1 <= T <= 10
1 <= K <= 26
1 <= |str| <= 10^6
The string str will contain only lowercase alphabets.
Time Limit: 1 sec
You do not need to print anything. It has already been taken care of. Just implement the function.
In this approach, we will traverse through all possible substrings and find all the strings with at most K unique characters, and then we will find the maximum size string of all the substrings.
We create a set uniqueChars for each substring and store the characters for the substring in the set. When the size of uniqueChars is greater than K, then the substring will have more unique characters than K.
Algorithm:
In this approach, we will make two pointers left and right. We start both pointers at 0 and increase the right pointer until we get more than K distinct characters between them. Then we will increase the left pointer until the number of distinct characters becomes less than or equal to K.
We repeat this process until both pointers reach the end of the string. We will update the answer as the maximum of answer and distance between both pointers in each step.
Algorithm: