[每日一题] [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;
}
全部评论

相关推荐

牛客604067584号:我9月初投递10月入池,泡到现在。hr全部离职,当然没离职的时候也联系不上。我发邮件给campus也不回我
点赞 评论 收藏
分享
01-16 18:48
四川大学 Java
KalznAsawind:人问他哪一个是pdd,他倒介绍起来了。。。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务