➤ Problem Link : BROKEN
👉 Hint : edit please
✅ C++ Solution :
#include<bits/stdc++.h>
using namespace std;
unordered_map<char,int> us;
int main()
{
int m;
while(scanf("%d",&m)!=EOF)
{
if(m==0)
break;
int i,k=0,ans=0;
us.clear();
string s;
scanf("\n");
getline(cin,s);
int l=s.length();
for(i=0;i<l;i++)
us[s[i]]=0;
for(i=0;i<l;i++)
{
if(us[s[i]]==0)
{
if(k==m)
break;
k++;
}
us[s[i]]++;
}
ans=max(ans,i);
for(int j=1;j<l;j++)
{
us[s[j-1]]--;
if(us[s[j-1]]<0)
us[s[j-1]]=0;
if(us[s[j-1]]!=0)
continue;
k--;
while(i<l)
{
if(k>=m && us[s[i]]==0)
break;
if(us[s[i]]==0)
k++;
us[s[i]]++;
i++;
}
ans=max(ans,i-j);
}
cout<<ans<<endl;
}
}
Thank you for your patience reading. If you enjoyed this post, I’d be very grateful if you’d help it spread by emailing it to a friend, or sharing it on Whatsapp or Facebook.
😇Happy Learning!!
