zoukankan      html  css  js  c++  java
  • 最短的包含字符串 (尺取)

    给出一个字符串,求该字符串的一个子串s,s包含A-Z中的全部字母,并且s是所有符合条件的子串中最短的,输出s的长度。如果给出的字符串中并不包括A-Z中的全部字母,则输出No Solution。

     

    Input

    第1行,1个字符串。字符串的长度 <= 100000。

    Output

    输出包含A-Z的最短子串s的长度。如果没有符合条件的子串,则输出No Solution。

    Sample Input

    BVCABCDEFFGHIJKLMMNOPQRSTUVWXZYZZ

    Sample Output

    28

     1 #include<cstdio>
     2 #include<cstring>
     3 #include<algorithm>
     4 #define inf 0x3f3f3f3f
     5 using namespace std;
     6 int main()
     7 {
     8     int i,len;
     9     char s[100010];
    10     int vis[100010];
    11     int r,l,sum,m;
    12     memset(vis,0,sizeof(vis));
    13     scanf("%s",s);
    14     len=strlen(s);
    15     memset(vis,0,sizeof(vis));
    16     r=l=sum=0;
    17     m=inf;
    18     while(r<len||sum==26)
    19     {
    20         while(r<len&&sum<26)
    21         {
    22             if(vis[s[r]-'A']==0)
    23             {
    24                 sum++;///记录出现的26个字母种类
    25             }
    26             vis[s[r]-'A']++;///记录每一种出现的个数
    27             r++;///右端点的扩张
    28         }
    29         if(sum==26)
    30         {
    31             m=min(m,r-l);
    32         }
    33         vis[s[l]-'A']--;
    34         if(vis[s[l]-'A']==0)
    35         {
    36             sum--;
    37         }
    38         l++;///左端点的扩张
    39     }
    40     if(m!=inf)
    41     {
    42         printf("%d
    ",m);
    43     }
    44     else
    45     {
    46         printf("No Solution
    ");
    47     }
    48     return 0;
    49 }


  • 相关阅读:
    JavaScript之图片操作7
    JavaScript之图片操作6
    【数据结构】树
    【数据结构】查找
    【数据结构】排序
    【HTML】常用标签及属性
    【数据结构】堆栈
    【计算机网络】五层体系结构
    【Linux】相关英文缩写含义
    【Java】连接数据库MySQL
  • 原文地址:https://www.cnblogs.com/wkfvawl/p/9332722.html
Copyright © 2011-2022 走看看