字符串
字符串
https://ac.nowcoder.com/acm/problem/18386
//字符串 //枚举+尺取法 #include <bits/stdc++.h> using namespace std; string s; int sts[30];//统计字母个数 bool pd(int *sts)//判断统计字母是否满足26个 { int i; for(i=0;i<26;i++) { if(sts[i]==0) return false; } return true; } int main() { cin>>s; int i,j,minn=s.size()+500,flag=0,p=0;//p为左指针 for(i=0;i<s.size();i++)//右指针移动 { int flag=0; sts[s[i]-'a']++; while(pd(sts)&&p<i-26)//当字符串合法 { flag=1;//标记合法,后面左指针可能要向后移动进行 minn=min(minn,i-p+1);//更新最短长度 if(minn==26) {cout<<minn<<endl;return 0;}//当长度为26时直接输出结束了 sts[s[p]-'a']--;// p++;//左指针试着向右移动 } if(flag)//左指针返回一位 { p--; sts[s[p]-'a']++; } } cout<<minn<<endl;