链接

[http://codeforces.com/group/1EzrFFyOc0/contest/701/problem/C]

题意

给你一个包含大小写字母长度为n的字符串,让你找包含所有种类字符的最短串

分析

其实这个用尺取法,先从开始找包含各种字符的串,然后不断地贪心取最小ans,具体看代码

代码

#include<bits/stdc++.h>
using namespace std;
#define ll long long
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int n,i;
string s;
int a[140],b[140];
//freopen("in.txt","r",stdin);
while(cin>>n){
cin>>s;
int sum=0;
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
for(i=0;i<n;i++)
a[s[i]]=1;
for(i=50;i<='z';i++)
sum+=a[i];
//cout<<sum<<endl;
memset(a,0,sizeof(a));
int ans=n,st=0,cnt=0;
for(i=0;i<n;i++){
if(s[i]>='a'&&s[i]<='z'){
if(!a[s[i]-'a']){
cnt++;
}
a[s[i]-'a']++;
}
else {
if(!b[s[i]-'A'])
cnt++;
b[s[i]-'A']++;
}
if(cnt==sum){
while(cnt==sum){
if(i-st+1<ans) ans=i-st+1;
if(s[st]>='a'&&s[st]<='z'){
a[s[st]-'a']--;
if(!a[s[st]-'a'])
cnt--;
}
else {
b[s[st]-'A']--;
if(!b[s[st]-'A'])
cnt--;
}
st++;
}
}
}
cout<<ans<<endl;
}
return 0;
}

最新文章

  1. bzoj2038小z的袜子
  2. jQuery知识点一 each()和toggleClass()
  3. response.sendRedirect()与request.getRequestDispatcher().forward()区别
  4. UIViewController的生命周期(根视图view从无到有的过程)
  5. 移动表格行 解决低版本IE fadeIn fadeOut 失效问题
  6. Java中测试对象的等价性
  7. 系统使用 aspose.cell , 使得ashx第一次访问会变很慢
  8. HDU-2126 Buy the souvenirs
  9. zoj3433(贪心+优先队列)
  10. 解决cocoapods在64位iOS7系统以下的警告问题
  11. docker~使用阿里加速器
  12. 04-创建kubeconfig认证文件
  13. MyDAL - .UpdateAsync() 之 .Set() 使用
  14. Login Verification CodeForces - 928A (实现)
  15. python学习08
  16. Scala中foldLeft的总结
  17. 2D转换与3D转换的区别
  18. python + pyqt5 QlineEdit QMessageBox实现信息录入和消息弹框提醒
  19. (maven项目)使用java -jar命令遇到的小问题|xx.jar中没有主清单或Error:Invalid or corrupt jarfile xx.jar
  20. hdu3853 LOOPS(概率dp) 2016-05-26 17:37 89人阅读 评论(0) 收藏

热门文章

  1. log4.net 配置-控制台输出带颜色的日志
  2. Team Dipper
  3. ConcurrentLinkedQueue源码解读
  4. Linux操作系统中打开文件数量的查看方法
  5. mysql-修改字段类型和修改字段名称
  6. python编程入门之简介
  7. zookeeper入门之Curator的使用之几种监听器的使用
  8. Android程序的反破解技术
  9. 扫描Linux服务器查找恶意软件和rootkit的一款工具
  10. SkylineGlobe6.5版本,在矿山、石油、天然气等能源行业的最新应用DEMO演示