51nod 1127 最短的包含字符串【尺取法】
来源:互联网 发布:淘宝汉服商家那家正规 编辑:程序博客网 时间:2024/05/22 10:32
1127 最短的包含字符串
基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题
给出一个字符串,求该字符串的一个子串S,S包含A-Z中的全部字母,并且S是所有符合条件的子串中最短的,输出S的长度。如果给出的字符串中并不包括A-Z中的全部字母,则输出No Solution。
Input
第1行,1个字符串。字符串的长度 <= 100000。
Output
输出包含A-Z的最短子串长度。如果没有符合条件的子串,则输出No Solution。
Input示例
BVCABCDEFFGHIJKLMMNOPQRSTUVWXZYZZ
Output示例
28
思路:
1、校赛打完了好开森,水一道题准备休息了。
2、尺取法即可,维护两个指针,分别表示窗口的左端点和窗口的右端点,对应一个窗口内每次都维护最小长度。
Ac代码:
#include<stdio.h>#include<string.h>#include<vector>using namespace std;int vis[500];char a[1000500];int main(){ while(~scanf("%s",a)) { memset(vis,0,sizeof(vis)); int n=strlen(a); int ss=0; int sum=0; int output=0x3f3f3f3f; int j=0; while(j<n) { if(sum<26) { vis[a[j]]++; if(vis[a[j]]==1) { sum++; } } j++; if(sum==26) { output=min(output,j-ss); while(sum==26) { vis[a[ss]]--; if(vis[a[ss]]==0) { sum--; } output=min(output,j-ss); ss++; } } } if(output==0x3f3f3f3f)printf("No Solution\n"); else printf("%d\n",output); }}
0 0
- 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 最短的包含字符串
- Java虚拟机(一)
- HMM 隐马尔可夫模型 代码实现
- 第十五周oj训练——统计字符串种类(2569)
- PAT 1123. Is It a Complete AVL Tree (30)
- windows下常用网络命令
- 51nod 1127 最短的包含字符串【尺取法】
- Hrbust2016年校团队赛E题
- [LeetCode]Recover Binary Search Tree
- 20161210-Allegro中的Flash和Thermal Relief
- ANSI C (6) —— 指针、断言、信号、跳转
- 带你认识指针——C语言的灵魂(一)
- 杭电2018之母牛的故事
- Android的简易弹幕
- 测试