牛客竞赛 1015 最短合法子串
代码
#include<bits/stdc++.h>
using namespace std;
int mp[39];
int main() {
string s;
cin>>s;
int cnt = 0;
int ans = 0x3f3f3f3f;
int n = s.length();
for (int i = 0 ,j=-1; i < n; i++) {
while (j < n-1 && cnt<26) {
j++;
mp[s[j]-'a']++;
if (mp[s[j]-'a']==1)
cnt++;
if (cnt == 26)
break;
}
if (cnt==26)
ans = min(ans,j-i+1);
mp[s[i]-'a']--;
if (mp[s[i]-'a']==0)
cnt--;
}
if(ans == 0x3f3f3f3f)cout<<-1;
else cout<<ans;
return 0;
}

浙公网安备 33010602011771号