Skip to main content

Smallest Distinct Window

Task: Find the length of smallest distinct window of given string, which is having every letter in the string at least one time.

Example:
Input:
1
aab
Output:
2

Here is the Code:
Program in C++:

  1. #include<iostream>
  2. #include<bits/stdc++.h>
  3. using namespace std;
  4. int main()
  5.  {
  6. int t;
  7. cin>>t;
  8. while(t--)
  9. {
  10.     string s;
  11.     cin>>s;
  12.     int vis[128];
  13.     memset(vis, 0, sizeof(vis));
  14.     string t,sdw;
  15.     // Implementation of Logic
  16.     for(int i=0;i<s.length();i++)
  17.     {
  18.         vis[s[i]]++;
  19.         t=t+s[i];
  20.         if(vis[s[i]]==1)
  21.         {
  22.             sdw=t;
  23.         }
  24.         char c;
  25.         while(1)
  26.         {
  27.             c=t[0];
  28.             vis[c]--;
  29.             if(vis[c]!=0)
  30.             {
  31.                 t.erase(t.begin()+0);
  32.             }
  33.             else
  34.             {
  35.                 vis[c]++;
  36.                 break;
  37.             }
  38.         }
  39.         if(t.length()<sdw.length())
  40.         {
  41.             sdw=t;
  42.         }
  43.     }
  44.     cout<<sdw.length()<<endl;
  45. }
  46. return 0;
  47. }

Here is the Video: