用双指针做的
提交记录
包含a-z的最短子串
题目描述
给定小写字母组成的字符串 s ,请你找出包含所有小写字母(任意顺序)的最短子串长度
输入格式
第一行包含1个小写字母组成的字符串 s
输出格式
输出一个正整数,代表包含 a-z(就是26个字母都出现过)的最短子串长度,如果无解输出 −1
样例 #1
样例输入 #1
xcprvkpcyiludxoazfwlcnfmrqvzgjbimlhqzekoaaunctetsa
样例输出 #1
43
提示
#include <bits/stdc++.h>
using namespace std;
string k;
int tong[27];
int have=0;
int ans=999999999;
int main(){
cin>>k;
for(int l=0;l<k.length();l++){
for(int i=1;i<=26;i++) tong[i]=0;
have=0;
for(int r=l;r<k.length();r++){
tong[k[r]-'a'+1]++;
if(tong[k[r]-'a'+1]==1) have++;
if(have==26){
ans=min(ans,r-l+1);
break;
}
}
}
if(ans==999999999){
cout<<-1;
return 0;
}
cout<<ans;
return 0;
}