题意 给定一个字符串,问最短子序列能包含a到z字母
思路 尺取法,也叫双指针
j往后找 满足有26个字母的时候,i往前
#include<iostream> using namespace std; int a[30]; int check() { for(int i=1;i<=26;i++) if(!a[i])return 1; return 0; } int main() { int ans=1e9; string s; cin>>s; for(int i=0,j=0;i<s.size();i++) { while(j<s.size()&&check()) { a[s[j]-'a'+1]++; j++; } if(!check()) ans=min(ans,j-i); a[s[i]-'a'+1]--; } cout<<ans<<endl; }