字符串——尺取

字符串

https://ac.nowcoder.com/acm/problem/18386

运用双指针,如果不符合条件,将第二个指针向右移,符合条件后,再把第一个指针向右移,直到刚好满足,这样记录每次刚好符合条件的字串长度,遍历完后取最小值。

#include<iostream>
#include<algorithm>
#include<string>

using namespace std;

int a[27];
bool check()
{
    bool flag=true;
    for(int i=0;i<26;i++)
    {
        if(a[i]==0)
        {
            flag=false;
            break;
        }
    }
    return flag;
}
int main()
{
    int minl=1e6,sum=0;
    string s;
    int cnt=0;
    cin>>s;
    char *p1=&s[0],*p2=&s[0];
    while(p2<&s[s.size()])
    {
    while(!check())
    {
        if(p2==&s[s.size()])
        goto out;
        a[*p2-'a']++;
        p2++;
    }
    while(check())
    {
        a[*p1-'a']--;
        p1++;
    }
    sum=p2-p1+1;
    minl=min(minl,sum);
    }
out:
    cout<<minl<<endl;
    getchar();
    getchar();
}
全部评论

相关推荐

11-14 16:13
已编辑
重庆科技大学 测试工程师
Amazarashi66:不进帖子我都知道🐮❤️网什么含金量
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务