给出一个字符串,求该字符串的一个子串S,S包含A-Z中的全部字母,并且S是所有符合条件的子串中最短的,输出S的长度。如果给出的字符串中并不包括A-Z中的全部字母,则输出No Solution。
Input:
第1行1个字符串。字符串的长度 <= 100000。
Output:
输出包含A-Z的最短子串长度。如果没有符合条件的子串,则输出No Solution。
示例:
Input1:
BVCABCDEFFGHIJKLMMNOPQRSTUVWXZYZZ
Output1:
28
Input2:
QQWERTYUIOPASDFGHJKLZXCVBNM
Output2:
26
思想:基本尺取法(滑动窗口),
整个过程分为4步:
1.初始化左右端
2. 右端不断向前滑动,直至满足条件
3.如果第二步无法满足条件,则终止,否则更新结果
4.左端扩大1,继续第二步
适用:在一个序列中,求满足条件连续子序列的最值(最小区间,或最大区间)
代码如下:
#include <bits/stdc++.h>
using namespace std;
int main()
{
int nums[26]; //用于标记 A~Z 出现的次数
string s;
cin>>s;
char cur;
int L &#