尺取法,码上了
#include<bits/stdc++.h>
using namespace std;
int flag[200];
int place[200];
int main()
{
int n;
string s;
cin>>n;
cin>>s;
int sum=0;
for(int i=0;i<n;i++){
if(!flag[s[i]]){
flag[s[i]]=1;
sum++;
}
}
int l=0,r;
for(int i=0;i<n;i++){
place[s[i]]=i;
if(flag[s[i]]){
sum--; flag[s[i]]=0;
}
r=i;
if(!sum) break;
}
int ans=r-l+1;
//cout<<ans<<endl;
while(r<n){
place[s[r]]=r;
while(place[s[l]]!=l){
l++;
ans=min(ans,r-l+1);
}
r++;
}
cout<<ans<<endl;
}
版权声明:本文为hhhequation原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。