首页 > 试题广场 >

eli和字符串

[编程题]eli和字符串
  • 热度指数:98 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
eli拿到了一个仅由小写字母组成的字符串。
她想截取一段连续子串,这个子串包含至少 个相同的某个字母
她想知道,子串的长度最小值是多少?
注:所谓连续子串,指字符串删除头部和尾部的部分字符(也可以不删除)剩下的字符串。例如:对于字符串而言,都是其子串。而则不是它的子串。

输入描述:
第一行输入两个正整数  
输入仅有一行,为一个长度为 的、仅由小写字母组成的字符串。


输出描述:
如果无论怎么取都无法满足条件,输出 
否则输出一个正整数,为满足条件的子串长度最小值。
示例1

输入

5 2
abeba

输出

3

说明

选择\mathit“beb”子串,长度为3,其中包含相同的两个'b'

备注:
头像 --嘤色暴撃--
发表于 2020-02-04 18:30:10
简单的队列模拟 首先把每一个字母加入队列,我们用head,tail表示队列的头和尾head是头的后一位,tail是尾那么目前所查找的区间长度为tail-head+1, tail=head+1时队列为空我们先不断地加入字母(按顺序)直到其中出现重复的k个字母,这时候就要把头缩回来(++head),直到 展开全文
头像 __Aurora__
发表于 2020-02-04 19:18:38
本题其实用前缀和就可以做因为每个字母出现一次,那么它的出现次数就+1,所以记录它的每个出现位置,用数组trace记录具体做法:struct node{int trace[200010], index=1;} lt[26]; 【trace类似于vector,莫习惯这么写了,见谅】 由于要求同个字母出现 展开全文
头像 longlongyu
发表于 2020-02-05 11:01:59
题目描述:eli拿到了一个仅由小写字母组成的字符串。她想截取一段连续子串,这个子串包含至少k个相同的某个字母。她想知道,子串的长度最小值是多少?注:所谓连续子串,指字符串删除头部和尾部的部分字符(也可以不删除)剩下的字符串。思路:利用for遍历26个字母,每个字母利用尺取法查找满足条件的最小长度。A 展开全文
头像 与人无语
发表于 2020-02-05 12:50:54
我(菜鸡)的想法是先从起始点开始扫描然后直到有字母达到k个 达不到就输出-1用数组储存字符个数 用ans记录最短长度然后维护这一子串 从起始点开始删减字符 直到不满足 从终止点添加字符直到满足如此重复这样把字符串走完 最短长度就出来了 蒟蒻的代码 #include <bits/std 展开全文
头像 谷雨逝
发表于 2020-02-04 23:24:08
eli拿到了一个仅由小写字母组成的字符串。她想截取一段连续子串,这个子串包含至少 个相同的某个字母。她想知道,子串的长度最小值是多少?注:所谓连续子串,指字符串删除头部和尾部的部分字符(也可以不删除)剩下的字符串。 可以开26个前缀,然后双指针找最小 依次记录至博客,以防日后忘记 代码来自寒假训练 展开全文
头像 牛客947274517号
发表于 2020-02-05 21:32:19
题目描述:eli拿到了一个仅由小写字母组成的字符串。 她想截取一段连续子串,这个子串包含至少 个相同的某个字母。 她想知道,子串的长度最小值是多少? 注:所谓连续子串,指字符串删除头部和尾部的部分字符(也可以不删除)剩下的字符串。思想:队列,结构体,字符串脚标的计数总是出错的原因:1、开辟的二维数 展开全文
头像 BlackAtao
发表于 2020-02-06 22:03:51
用邻接表,将对应字母出现的各个位置存下来。用cnt[ ]数组存每个字母出现的次数。 如果字母出现的次数小于k 那就直接跳过如果次数>=k 就对邻接表里所有相邻的k个字母遍历ans 更新最短距离 #include <bits/stdc++.h> using namespace st 展开全文
头像 zitoLi
发表于 2020-02-21 16:06:58
我是如何嫖大佬题解的//随便找一个字符串,比如abcdcbef,按照算法自己模拟一遍就恍然大悟了!18行是核心 嫖了别人的一个解答, #include<bits/stdc++.h> using namespace std; const int N = 200010; char s[N]; 展开全文
头像 chenlan114
发表于 2026-02-06 16:56:43
#include<bits/stdc++.h> using namespace std; using ll=long long; const ll inf=1145141919810; // 初始化无穷大,用于记录最小长度的初始值 int main(){ ios::sync_with 展开全文
头像 小毅儿
发表于 2020-09-16 21:34:16
#include <cstdio> #include <cstring> #include <string> #include <cmath> #include <iostream> #include <algorithm> # 展开全文