div.2/C. They Are Everywhere<two pointer>
题意:
给出包含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;
}
div.2/C. They Are Everywhere<two pointer>的更多相关文章
- div蒙版+可移动
<html> <head> <title></title> <script src="jquery-1.8.2.js&q ...
- css实现遮罩层,父div透明,子div不透明
使用元素的opacity 属性,设置遮罩层的效果, 主要 样式是:background-color: #ooo; opacity:0.3; <div style="width:500p ...
- ABP集合贴
thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>t ...
- 解决IE浏览器文字上面放无内容的元素选不中的方法
<div class="md1"> <p><i>sdgsgereryeryery</i></p> <label c ...
- PHP 实现“贴吧神兽”验证码
最早看到 “贴吧神兽” 验证码是在百度贴吧,吧主防止挖坟贴,放出了究极神兽验证码 例如: 地址:http://tieba.baidu.com/p/3320323440 可以用 PHP + JavaSc ...
- HTML页面弹出自定义对话框带遮蔽罩(使用JavaScript)
转载:http://blog.sina.com.cn/s/blog_610f47c50100ohe4.html 原理其实很简单:首先绘制弹出的自定义对话框,将其使用display:none隐藏,因为设 ...
- Accordion - 手风琴
//手风琴效果 <div style="overflow:hidden;height:400px;width:948px;"> <div class=" ...
- tableindex
在写代码的时候,失焦的第一反应便是ng-blur,没想到在一个标签上其作用了,多加了几个标签没反应,于是发现了tableindex,写的代码列子如下,希望可以帮助你: <img src='{{a ...
- HTML基础(五)——-css样式表——样式属性——格式与布局
一.position:fixed 锁定位置(相对于浏览器的位置),例如有些网站的右下角的弹出窗口. 示例: 二.position:absolute 绝对位置: 1.外层没有position:a ...
随机推荐
- Map获取键值,Map的几种遍历方法
Map 类提供了一个称为entrySet()的方法,这个方法返回一个Map.Entry实例化后的对象集.接着,Map.Entry类提供了一个 getKey()方法和一个getValue()方法,Map ...
- C#获取数字证书
string Thumbprint = "C2489D912F247C187AA14B1291A6fB612281225D"; X509Store store = new X509 ...
- stack(STL)
//Stack STL //在STL中,栈是以别的容器作为底部结构,再将 //接口改变,使之符合栈的特性 //一共5个常用操作函数 //构造析构 stack<Elem>c; //build ...
- MySQL(3)-索引
一.索引类型 在MySQL中,存储引擎使用索引,首先在索引中找到对应值,然后根据匹配的索引记录中找到对应的行. 无论是多么复杂的ORM工具,在精妙和复杂的索引面前都是"浮云".这里 ...
- linux下svn用法
linux下svn的一些常用命令: checkout代码到当前目录: svn co svn://192.168.22.23/project ./ swich 切换分支: 先查看当前工作副本:svn ...
- Openjudge-计算概论(A)-求满足条件的3位数
描述: 编写程序,按从小到大的顺序寻找同时符合条件1和2的所有3位数,条件为: 1.该数为完全平方数 2.该数至少有2位数字相同 例如,100同时满足上面两个条件. 输入输入一个数n,n的大小不超过实 ...
- mysql灵活分页存储过程
), -- 表名 ), -- 排序字段(必须!支持多字段不用加order by) IN _PageIndex int, -- 指定当前为第几页 IN _PageSize int, -- 每页多少条记录 ...
- ios 将图片变成圆形
#pragma mark - 将图片转换成圆形 -(UIImage*) circleImage:(UIImage*) image withParam:(CGFloat) inset { UIGraph ...
- Python使用shape计算矩阵的行和列
shape函数是numpy.core.fromnumeric中的函数,它的功能是读取矩阵的长度. 1 >>> a=mat([[1,2,3],[5,6,9]]); 2 >> ...
- 当用反射获取一个model,这个model里面字段有nullable的时候,获取字段真实类型
Using Reflection to Determine whether an Type is Nullable And Get the underlying Type /// <summar ...