链接:https://ac.nowcoder.com/acm/contest/3002/G
来源:牛客网

时间限制:C/C++ 2秒,其他语言4秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld

题目描述

eli拿到了一个仅由小写字母组成的字符串。
她想截取一段连续子串,这个子串包含至少 个相同的某个字母
她想知道,子串的长度最小值是多少?
注:所谓连续子串,指字符串删除头部和尾部的部分字符(也可以不删除)剩下的字符串。例如:对于字符串“arcaea”而言,“arc”、“rcae”“rcae”都是其子串。而“car”、“aa”则不是它的子串。

 

输入描述:

第一行输入两个正整数 

输入仅有一行,为一个长度为 

 的、仅由小写字母组成的字符串。
 

输出描述:

如果无论怎么取都无法满足条件,输出 


否则输出一个正整数,为满足条件的子串长度最小值。
 
示例1

输入

复制 5 2
abeba

5 2
abeba

输出

复制 3

3

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

 解析:给题非常巧妙的用b[t][vis[t]]=i;来记录t字符的出现的次数(vis[t])和他的位置i。
所以距离就变成了:ans=min(ans,i-b[t][vis[t]-k+1]+1);
AC代码:
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<map>
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
inline int read()
{
int x=,f=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>=''&&ch<=''){x=x*+ch-'';ch=getchar();}
return x*f;
}
const int maxn=5e5+;
int n,k;
char a[maxn];
int b[][maxn];
int vis[maxn];
int ans=0x3f3f3f3f;
int main(){
cin>>n>>k;
scanf("%s",a+);
for(int i=;i<=n;i++){
int t=a[i]-'a';
vis[t]++;
b[t][vis[t]]=i;
if(vis[t]>=k){
ans=min(ans,i-b[t][vis[t]-k+]+);
}
}
if(ans==0x3f3f3f3f){
printf("-1\n");
}
else{
printf("%d",ans);
}
}
 

最新文章

  1. linux防火墙开启端口
  2. 用centos光盘安装RPM包的方法
  3. C#对图片文件的压缩、裁剪操作
  4. golang 文件读取
  5. Jquery的hover方法让鼠标经过li时背景变色
  6. JAVA 和 C# 调用外部.exe文件,传值并等等exe完成,获取返回值
  7. C#中(int)a和Convert.ToInt32(a)的区别
  8. MFC中为菜单或按钮添加快捷键功能
  9. 从壹开始微服务 [ DDD ] 之十二 ║ 核心篇【下】:事件驱动EDA 详解
  10. 华为交换机-SNMP配置
  11. C#调用WebApi
  12. ionic生成全尺寸icon和splash
  13. 348. Design Tic-Tac-Toe设计井字游戏
  14. C语言的原码,反码,补码
  15. SQL 逗号分隔将一行拆成多行
  16. Mybatis二(高级部分)
  17. 2018.11.02 洛谷P3952 时间复杂度(模拟)
  18. C# 连接 sql server
  19. Android4.4 ContentResolver查询图片无效 及 图库删除 增加图片后,ContentResolver不更新的问题解决
  20. [转]Ubuntu默认root用户密码

热门文章

  1. conda使用以前安装的python环境
  2. LeNet, AlexNet, VGGNet, GoogleNet, ResNet的网络结构
  3. python的for循环的神奇之处
  4. HDU5608
  5. PAT (Advanced Level) Practice 1036 Boys vs Girls (25 分)
  6. sqli-labs less-5 --&gt; less-6
  7. Qt Gui 第六章布局管理
  8. Blue Jeans[poj3080]题解
  9. 关于docker容器访问的主机的端口问题
  10. Java 中多态的实现(上)