蒟蒻的题解

eli和字符串

http://www.nowcoder.com/questionTerminal/a4572dcac7a44174b050930146584f72

我(菜鸡)的想法是先从起始点开始扫描然后直到有字母达到k个 达不到就输出-1
用数组储存字符个数 用ans记录最短长度
然后维护这一子串 从起始点开始删减字符 直到不满足 从终止点添加字符直到满足
如此重复
这样把字符串走完 最短长度就出来了

蒟蒻的代码
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ll n,k;
ll q[1000];
string a;
ll ff()
{
    for(int i='a';i<='z';++i)
        if(q[i]==k) return 1;
    return 0;
}
int main()
{
  cin>>n>>k>>a;
  ll len=0;
  ll lenmin=1e10;
  ll kk=1;
  ll  l,r=0;
  for(int i=0;i<n;++i)
  {
        q[a[i]]++;
        len++;
        if(ff()){l=i;break;}

  }
  if(!ff()){cout<<-1<<endl;return 0;}
  lenmin=len;
 while(l<n)
 {
    if(ff())
    {
     lenmin=min(len,lenmin);
     q[a[r]]--;
     r++;
     len--;
    }
    else
    {
        l++;
        q[a[l]]++;
        len++;
    }
 }
 cout<<lenmin<<endl;
    return 0;
}
全部评论
太强了
点赞 回复 分享
发布于 2020-02-05 13:18

相关推荐

Vincent777...:实习经历可以考虑放上去,对于软件使用方面可以细化一些,比如调整为:熟悉基于LSDYNA的瞬态动力学仿真分析,熟悉基于WORKBENCH的结构拓扑优化
我的简历长这样
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
昨天 17:55
点赞 评论 收藏
分享
评论
6
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务