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

相关推荐

KPLACE:首先是板面看起来不够,有很多奖,比我厉害。项目要精减,大概详细描述两到三个,要把技术栈写清楚,分点,什么算法,什么外设,怎么优化,不要写一大堆,分点,你写上去的目的,一是让别人知道你做了这个知识点,然后在面试官技术面的时侯,他知道你会这个,那么就会跟你深挖这个,然后就是个人评价改为专业技能
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务