字符串——尺取

字符串

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();
}
全部评论

相关推荐

牛客771574427号:恭喜你,华杰
点赞 评论 收藏
分享
11-27 17:08
已编辑
牛客_产品运营部_私域运营
腾讯 普通offer 24k~26k * 15,年包在36w~39w左右。
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务