[每日一题] [NC18386] 字符串
https://ac.nowcoder.com/acm/problem/18386
题目大意:选取字符串最长的包含所有小写字母的substring的长度。
比较简单,用sliding window即可,维护一个left和right区间,每次right尽量伸长,left再减少一位。
#define MAXN 1000005 char s[MAXN]; int doit() { int n = strlen(s); // [l, r). int l = 0, r = 0; int ans = n; u_m<char, int> counter; while (l < n) { while (r < n) { if (sz(counter) == 26) { ans = min(ans, r - l); break; } counter[s[r]]++; ++r; } counter[s[l]]--; if (counter[s[l]] == 0) { counter.erase(s[l]); } ++l; if (sz(counter) == 26) { ans = min(ans, r - l); } } return ans; } int main(int argc, char* argv[]) { scanf("%s", s); printint(doit()); return 0; }