51nod 1127 最短的包含字符串 尺取法
来源:互联网 发布:博士申请 知乎 编辑:程序博客网 时间:2024/05/17 03:48
第1行,1个字符串。字符串的长度 <= 100000。
输出包含A-Z的最短子串长度。如果没有符合条件的子串,则输出No Solution。
BVCABCDEFFGHIJKLMMNOPQRSTUVWXZYZZ
28
要求用最小的长度来达到某一个条件,这种题目用尺取法来解决
#include <iostream>
#include<string.h>
#include<algorithm>
#include<queue>
using namespace std;
char str[110000];
int vis[30];
bool check()
{
for(int i=0;i<26;i++)
{
if(vis[i]==0)
return false;
}
return true;
}
int main()
{
cin>>str;
int len=strlen(str);
int t=0; //右边
int s=0; //左边
int res=len+1; //输出值
memset(vis,0,sizeof(vis));
for(;;) //无限循环
{
while(t<len&&!check()) //从s开始到t位置,满足全部条件
{
int c=str[t]-'A';
vis[c]++;
t++;
}
if(t==len)
break;
res=min(res,t-s); //记录长度
int cc=str[s]-'A'; //相关判断条件的改变
if(vis[cc]==1)
{
vis[cc]=0;
}
else
{
vis[cc]--;
}
s++; //开始位置+1
}
if(res==len+1)
cout<<"No Solution"<<endl;
else
cout<<res<<endl;
}
- 51NOD 1127 最短的包含字符串 尺取法
- 51NOD 1127 最短的包含字符串(尺取法)
- 51nod 1127 最短的包含字符串【尺取法】
- 51nod 1127 最短的包含字符串 (尺取法)
- 51nod 1127 最短的包含字符串(尺取法)
- 51nod 1127 最短的包含字符串 尺取法
- 51nod 1127 最短的包含字符串(尺取法)
- 51nod oj 1127 最短的包含字符串 【尺取法】
- 51nod1127 最短的包含字符串(尺取法)
- 51Nod 1127 最短的包含字符串 (尺取
- 51nod 1127 最短包含字符串
- 51nod 1127 最短的包含字符串 (滑动窗口)
- 51NOD 1127 最短的包含字符串
- 51Nod-1127-最短的包含字符串
- 51nod 1127 最短的包含字符串(滑窗)
- 51nod 1127 最短的包含字符串
- 51nod-【1127 最短的包含字符串】
- 51nod 1127 最短的包含字符串
- coco评价指标
- Android8.0 电池用量 Battery usage data isn't available 问题
- 获取两点的偏移量(角度)
- c#委托
- 获取Goroutine Id的最佳实践
- 51nod 1127 最短的包含字符串 尺取法
- 使用jdbc访问日志服务
- 手写spring ioc文件配置版
- 算法爱好者——被围绕的区域 ? 待解决
- lens框架mtk
- JavaScript中的继承
- iOS友盟错误分析定位
- SQL Server移植
- lumion 8.0 pro官方中文免费版下载