zoukankan      html  css  js  c++  java
  • 洛谷T37537 公主的考验

    题目传送门:https://www.luogu.org/problemnew/show/T37537

    题目背景

    大家都知道,夜刀神十香ღ是公主殿下手下的元老级大骑士,然而公主招募的保护自己的大骑士,肯定是要具备颜值和智商的。当年公主殿下就出了一道题目考验了他。

    题目描述

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

    输入输出格式

    输入格式:

    第1行,1个字符串。

    输出格式:

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

    输入输出样例

    输入样例: 
    BVCABCDEFFGHIJKLMMNOPQRSTUVWXZYZZ
    输出样例: 
    28

    说明

    字符串的长度 <= 100000;


    思路:

           这道题用到了尺取法(双指针),

        一个数( l )记录区间的开始,一个数( r )记录末尾,

        先移动末尾( r ),满足条件后移动开始(缩小区间,就是那个while循环)

        所以每次让 r 右移,如果最左边的出现过就让( l )右移,

        如果得到了 值= 26 就可以更新答案。

        

        题目有点绕,不过也没事。

                  这是一道字符串,尺取法的题目。。。。。

        哦,突然忘了~~~~~

        如果答案是等于初始值的,那么输出“No Solution” (引号不用输出)

        那么——输出答案!!

           不加No Solution 很惨 才 56 % 

           如测评记录:https://www.luogu.org/record/show?rid=14248956

           加上大变样!AC了! 100%

       如测评记录:https://www.luogu.org/record/show?rid=14249037

      代码需要注意细节!!!!!!!

       虽然string 慢,但我喜欢啊!!!

    放代码:

        

     1 #include <bits/stdc++.h>
     2 #define N 1000010
     3 #define INF 0x3f3f3f3f
     4 using namespace std;
     5 int main()
     6 {
     7     int i,l=0,ans=INF;
     8     int vis[200]={0};
     9     string s;
    10     set<char>myset;
    11     cin>>s;
    12     for(i=0;s[i];i++)
    13     {
    14         myset.insert(s[i]);
    15         vis[s[i]]++;
    16         while(vis[s[l]]>1)
    17             vis[s[l]]--,l++;
    18         if(myset.size()==26)
    19             ans=min(ans,i-l+1);
    20     }
    21     if(ans==0x3f3f3f3f)cout<<"No Solution"<<endl;
    22     else cout<<ans<<endl;
    23     return 0;
    24 }

                 

    OVER!

  • 相关阅读:
    js实现各种复制到剪贴板的方法
    PowerDesigner生成数据字典
    oracle实用sql之将逗号分割的字符串分割多个列
    ROW_NUMBER() OVER()函数用法;(分组,排序),partition by
    SQL Server 2008中的CTE递归查询得到一棵树
    【GoLang】GoLang 错误处理 -- 使用 error is value 的思路处理,检查并处理error
    【GoLang】golang 报管理工具 Godep 介绍
    【GoLang】GoLang 错误处理 -- 使用异常的思路进行处理
    【GoLang】GoLang 官方 对 error 处理的意见
    【GoLang】panic defer recover 深入理解
  • 原文地址:https://www.cnblogs.com/wangshengjun/p/xiaoN.html
Copyright © 2011-2022 走看看