链接
[]
题意
给你一个包含大小写字母长度为n的字符串,让你找包含所有种类字符的最短串
分析
其实这个用尺取法,先从开始找包含各种字符的串,然后不断地贪心取最小ans,具体看代码
代码
#includeusing namespace std;#define ll long longint main(){ ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); int n,i; string s; int a[140],b[140]; //freopen("in.txt","r",stdin); while(cin>>n){ cin>>s; int sum=0; memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); for(i=0;i ='a'&&s[i]<='z'){ if(!a[s[i]-'a']){ cnt++; } a[s[i]-'a']++; } else { if(!b[s[i]-'A']) cnt++; b[s[i]-'A']++; } if(cnt==sum){ while(cnt==sum){ if(i-st+1 ='a'&&s[st]<='z'){ a[s[st]-'a']--; if(!a[s[st]-'a']) cnt--; } else { b[s[st]-'A']--; if(!b[s[st]-'A']) cnt--; } st++; } } } cout< <