题意 给定一个字符串,问最短子序列能包含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;
}