题目链接:
题意:中文题诶~
思路:尺取法
维护一个队列,若当前队首的元素在后面出现了,那么我们就将其删除,若当前队列里含有26个字母,我们就记录其size。
取所有size里面的最小值就是我们要的答案。。。
代码:
1 #include2 #include 3 #include 4 #include 5 #include 6 #define MAXNV 30 7 #define MAXNA 100010 8 using namespace std; 9 10 int vis[MAXNV];11 char a[MAXNA];12 13 int main(void){14 int value=0, ans=MAXNA;15 queue q;16 scanf("%s", a);17 int len=strlen(a);18 for(int i=0; i =2){25 vis[q.front()-'A']--;26 q.pop();27 }28 if(value>=26){29 int gg=q.size();30 ans=min(ans, gg);31 }32 }33 if(value<26){34 cout << "No Solution" << endl;35 }else{36 cout << ans << endl;37 }38 return 0;39 }