思路
滑动窗口
确保窗口里面的值包含26个字母
如果不包含, 窗口就往右边伸展
如果已经包含, 就尝试左边缩小窗口
ac代码
#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
const int inf = 1e9;
map<char, int> vis;
int main()
{
string s;
cin >> s;
int n = s.length();
int l = 0, r;
int ans = inf;
for (r = 0; r < n; r++)
{
vis[s[r]]++;
while (vis.size() == 26)
{
ans = min(ans, r - l + 1);
vis[s[l]]--;
if (vis[s[l]] == 0 ) vis.erase(s[l]);
l ++ ;
}
}
cout << ans;
return 0;
}