Description

FST 是一名可怜的 ACMer,他很强,但是经常 fst,所以 rating 一直低迷。 但是重点在于,他真的很强!他发明了一种奇特的加密方式,这种加密方式只有 ACMer 才能破解。 这种加密方式是这样的:对于一个 01 串,他会构造另一个 01 串,使得原串是在新串 中没有出现过的最短的串。 现在 FST 已经加密好了一个串,但是他的加密方式有些 BUG,导致没出现过的最短的 串不止一个,他感觉非常懊恼,所以他希望计算出没出现过的最短的串的长度。

Input

单组数据 一行,一个 01 串,字符串串长小于等于10^ 5

Output

一行,一个正整数,表示没有出现过的最短串的长度

Sample Input

100010110011101

Sample Output

4

题意:在一个很长的串内找到一个没有出现过最短的子串,由于串比较长,所以我们不能直接对于字符串进行处理。我们可以换一个思想,从答案的长度入手,每次枚举答案的长度,然后把这个很长的子串拆分很多这个长度的子串,放到set当中存储,利用set的去重,如果最后的set的size()<2^(ans)也就是小于我们枚举长度能产生所有的可能的串的数量,那么就说明当中肯定有一个串没有出现过。就可以得到答案。

这题也可以用字符串hash去做,时间复杂度会比set+string的要小些。但是思想是一样的。
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <set>
using namespace std;string s;
set<string>ss;
int main()
{cin>>s;int len=s.length();string temp="";int ans=1;while(1){ss.clear();for(int i=0;i<=len-ans;i++){
//            cout<<i<<endl;for(int j=i;j<i+ans;j++){temp+=s[j];}
//            cout<<temp<<endl;ss.insert(temp);temp="";}
//        cout<<ss.size()<<endl;if(ss.size()<pow(2,ans))break;elseans++;}printf("%d\n",ans);return 0;
}/**********************************************************************Problem: 2188User: therangLanguage: C++Result: ACTime:540 msMemory:3580 kb
**********************************************************************/

  

转载于:https://www.cnblogs.com/jkzr/p/9956613.html

CSU2188: Substring相关推荐

  1. Java substring使用时有哪些注意事项?

    首先,使用substring截取字符串时,可能会出现两种异常,分别是StringIndexOutOfBoundsException和NullPointerException. 即字符串索引越界异常 与 ...

  2. leetcode 30. Substring with Concatenation of All Words 与所有单词相关联的字串 滑动窗口法

    题目描述 给定一个字符串 s 和一些长度相同的单词 words.在 s 中找出可以恰好串联 words 中所有单词的子串的起始位置. You are given a string, s, and a ...

  3. leetcode Longest Substring with At Most Two Distinct Characters 滑动窗口法

    题目解析 代码如下 题目解析 这一题是一道会员的题目,题目介绍如下: Given a string, find the length of the longest substring T that c ...

  4. js中substr,substring,indexOf,lastIndexOf的用法

    js中substr,substring,indexOf,lastIndexOf等的用法 1.substr substr(start,length)表示从start位置开始,截取length长度的字符串 ...

  5. JavaScript中substr()和substring的区别

    例子: var letters = "abcdefg"; console.log(letters.substr(1,3))//结果为bcd console.log(letters. ...

  6. LeetCode.3-最长无重复字符子串(Longest Substring Without Repeating Characters)

    这是悦乐书的第341次更新,第365篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Medium级别的第2题Longest Substring Without Repeating Cha ...

  7. LeetCode 76. Minimum Window Substring / 567. Permutation in String

    76. Minimum Window Substring 典型Sliding Window的问题,维护一个区间,当区间满足要求则进行比较选择较小的字串,重新修改start位置. 思路虽然不难,但是如何 ...

  8. [LeetCode] Longest Substring with At Most K Distinct Characters 最多有K个不同字符的最长子串...

    Given a string, find the length of the longest substring T that contains at most k distinct characte ...

  9. Java String.substring内存泄露?

    2019独角兽企业重金招聘Python工程师标准>>> String可以说是最常用的Java类型之一了,但是最近听说JDK6里面String.substring存在内存泄露的bug, ...

最新文章

  1. 智能改变未来,创新引领世界,第二届深圳国际人工智能展暨智能制造创新高峰论坛盛大启幕!
  2. 下面不属于python第三方库的安装方法的是-关于python中第三方库安装方法和问题解决...
  3. 剑指offer 算法 (知识迁移能力)
  4. linux修正磁盘错误,找到了linux分区顺序错乱修复方法
  5. idea 热部署时 tomcat处 没有update classes and resource 选项
  6. clickhouse 的mysql表引擎
  7. 实战MHDD检测硬盘
  8. Python基于ImageAI实现完整的流程:数据集构建、模型训练、识别预测
  9. 上海仰邦BX-5K1,BX-5K2系列板卡加入定时开关指令后死机现象及解决方案
  10. NOIP2016普及组初赛难点整理
  11. win7做ftp服务器是否稳定,win7可以做ftp服务器吗
  12. 线性表的链式存储结构(完整代码(C语言)+运行实例)
  13. 涨知识:面试字节跳动Java研发岗,经验分享
  14. google全屏快捷方式 关键字 kiosk
  15. 工行山东省分行加强客户信息安全保护
  16. SOA实施妙方 以CRM为切入点
  17. 思科ccie和华为hcie中交换机环路的产生原因和解决方法
  18. PHP二维数组用某个字段的值当做键名
  19. 数据分析小项目01 __《少年的你》豆瓣短评__V1.0
  20. 基于JAVA网上体育用品销售系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署

热门文章

  1. php5.3的新特性
  2. 扫描自己进入VR中 SLAM Scan 3D引擎将做到
  3. 开源ImageFilter库v0.3:新增22种图片效果
  4. P2051 中国象棋
  5. 深入剖析Redis系列(三) - Redis集群模式搭建与原理详解
  6. Scala进阶之路-面向对象编程之类的成员详解
  7. 人工智能历经风雨二十载 AI专用芯片成蓝海
  8. 无密码身份验证:安全、简单且部署快速
  9. jQuery.Validate 验证
  10. WinForm资源文件使用