题意:

给出包含n (3<=n<=100000)个字符的字符串,计算出包含所有类型字符的最小区间长度。

题解:

Two pointer.注意区间的处理。
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
const int maxn=100000+100;
char s[maxn];
int vis[1000+10];
int l=0,r=0,num=0;
int n,ty=0;
int Find(char t,int pos)//向右查找所需要的字符
{for(;pos<n;pos++){if(s[pos]==t){vis[s[pos]]++;return pos;}vis[s[pos]]++;}return 0;
}
int main ()
{scanf("%d",&n);scanf("%s",s);for(int i=0;i<n;i++)//计算字符的种类{if(vis[s[i]]==0)ty++;vis[s[i]]++;}memset(vis, 0, sizeof(vis));for(int i=0;i<n;i++)//寻找起始区间{if(vis[s[i]]==0)num++;vis[s[i]]++;if(num==ty){r=i;break;}}int ans=r+1;for(int i=0;i<n;i++){if(vis[s[i]]>1){vis[s[i]]--;}else{ans=min(ans,r-i+1);int p=Find(s[i],r+1);if(p==0)break;else{r=p;vis[s[i]]--;ans=min(ans,r-i);}}}printf("%d\n",ans);return 0;
}

转载于:https://www.cnblogs.com/pealicx/p/6115618.html

div.2/C. They Are Everywheretwo pointer相关推荐

  1. css怎样使鼠标移到div上显示手型

    新建一个html文件,命名为test.html,用于讲解css怎样使鼠标移到div上显示手型. 在test.html文件内,创建一个div模块,下面将使用css设置该div的样式,实现鼠标移到div上 ...

  2. div鼠标放上去会变成小手样式

    css变小手样式 欢迎来到我的博客,我很开心. 在div的样式上加cursor:pointer;这个就搞定了,希望对你有帮助.

  3. Ajax弹出式无刷新城市选择特效

    为什么80%的码农都做不了架构师?>>>    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional// ...

  4. 037_Dropdown下拉菜单

    1. Dropdown下拉菜单 1.1. Dropdown下拉菜单将动作或菜单折叠到下拉菜单中. 1.2. Dropdown Attributes 参数 说明 类型 可选值 默认值 type 菜单按钮 ...

  5. 访问Mat中每个像素的值

    Color Reduce 还是使用经典的Reduce Color的例子,即对图像中的像素表达进行量化.如常见的RGB24图像有256×256×256中颜色,通过Reduce Color将每个通道的像素 ...

  6. opencv图像处理常用完整示例代码总结

    显示图像 #include "StdAfx.h" #include <string> #include <iostream> #include <op ...

  7. opencv图像处理总结

    opencv图像处理基本操作 1. 矩阵数据类型 通用矩阵数据类型: CV_<bit_depth>(S|U|F)C<number_of_channels> 其中,S表示带符号整 ...

  8. 一个网页菜单的CSS代码分析

    一个绿色网页菜单,效果如下,网上可下载到该资源: 下面研究其css代码:这是一个比较复杂的菜单:可学到很多东西: /* menu::base */ div#menu {height: 46px;pad ...

  9. 超详细轮播图的三种实现方法html+css+javascript

    对代码不理解的可以参考我的个人视频 https://www.bilibili.com/video/BV1jA411Y7Ek/ 1.带箭头焦点轮播图js完成版 1.1 html部分 <!DOCTY ...

最新文章

  1. restful url 设计规范_RESTful API接口设计规范
  2. 解题报告 『生活大爆炸版石头剪刀布(模拟)』
  3. 病毒研究之感染linux脚本
  4. java 查询表 并返回数据_ajax与java前后台传值及数据表查询解决一个bug的问题
  5. Confluence 6 升级完成后的检查
  6. sjms-1 面向对象
  7. C# 设计模式,工厂方法
  8. 屏幕录像软件Bandicam和oCam
  9. 回家了,写博文继续!
  10. DM8168 unrecoverable error: OMX_ErrorBadParameter (0x80001005) [resolved]
  11. linux学习笔记:shell变量
  12. 十进制小数转换为R进制小数
  13. IP地址,子网掩码,网关三者的关系和作用
  14. 把 VS Code 打造成 Java 开发 IDE,也挺爽!
  15. bat批处理删除文件
  16. 用TensorFlow训练一个物体检测器(手把手教学版)
  17. ORA-28000账户被锁和解锁
  18. 手机怎么裁剪视频尺寸简单?推荐给你这两个裁剪方法
  19. 把.app文件打包ipa 利用Payload 打包ipa
  20. 【内网学习笔记】9、iodine 使用

热门文章

  1. Collaborative topic modeling(推荐)算法实现中的大数组问题
  2. 包管理器Bower使用手册之一
  3. 图的最小生成树(Prim算法)
  4. 主成分分析(PCA)方法
  5. HTML 元素和属性--备份
  6. Android编译系统简要介绍和学习计划
  7. html请求接口_软件测试学习教程——LoadRunner实现接口测试
  8. java antd实现登录,AntDesign(React)学习-4 登录页面提交数据简单实现
  9. java响应式网页设计_基于HTML5的响应式网站的设计与实现(论文).docx
  10. html条件查询的页面,如何在 url 中记录页面搜索条件