题解 | #字符串#

字符串

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

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

相关推荐

05-20 21:57
已编辑
门头沟学院 Java
喜欢吃卤蛋的悲伤蛙在提需求:建信融通没消息吧,我2说有实习挂简历不理了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务