包含全部字母的最小字串(双指针)

链接:https://ac.nowcoder.com/acm/contest/79240/C
来源:牛客网

给出一个字符串ss仅由小写字母组成,求s中包含所有个小写字母的最小子串长度。

输入描述:
一行一个字符串S。只包含小写字母。S 的长度不超过106.

输出描述:
一行一个数字,代表字符串 S 的所有优美子串的最短长度。数据保证存在一个合法的 S 的子串。

示例1
输入
ykjygvedtysvyymzfizzwkjamefxjnrnphqwnfhrnbhwjhqcgqnplodeestu
输出
49

示例2
输入
asdgfhjjagsdghfhjkljklhlkzxmnbzxcmnbvqweyutryewiuortypouyuip
输出
46

这个题一眼双指针,如果不会双指针的可以看看这个我一个学长的公众号
https://mp.weixin.qq.com/s/2Ai1aG2hjy4fyAPzflwU8w

#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
const int maxn=1e6+100;
typedef long long ll;
char a[maxn];
int len;
int cnt[maxn];
int main(){
	scanf("%s",a+1);
	len=strlen(a+1);
	int ans=len,s=0;
	int l=1;
	for(int r=1;r<=len;r++){
		if(cnt[a[r]-'a']==0){
			s++;
		}
		cnt[a[r]-'a']++;
		while(s==26){
			ans=min(ans,r-l+1);
			if(cnt[a[l]-'a']==1){
				s--;
			}
			cnt[a[l]-'a']--;
			l++;
		}
	}
	cout<<ans<<endl;
}
posted @   lipu123  阅读(17)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示