CodeForces - 701C尺取法

尺取法,码上了

#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版权协议,转载请附上原文出处链接和本声明。