codevs 1061 重复子串
某电视台在每一个星期天都有一个福利彩票节目,在该节目中有一个考察幸运观众记忆力的节目。节目的安排是这样的:首先由节目主持人说出一串诸如“左1右2左2左3右4左1”的数值串,然后由幸运观众重复该数值串;如果幸运观众能全部记忆出节目主持人说的所有数值串,该观众将获得一笔数目可观的奖金。为了确保节目的质量,节目导演希望这种数值串中不含连续的2个以上相同子串,这样数值串就不易记忆。他们称这种有连续相同子串的数值串为“易数值串”,而这种相同子串称为重复子串;无重复子串的数值串称为“难数值串”。
例如,下列字符串是“易数值串”:
(1)左1左1 (2)左1右2左3右2左3右2(3)左1右2左4左1右2左4右2
而下列字符串是“难字符串”:
(1)左1(2)左1右2(3)左1右2左1右1(4)左1右2右4左1右2
现假设:
(1)数值前只有“左”和“右”2个方向,分别用L和R代替“左”和“右”。
(2)数字范围为1,2,3,4,5,6,7,8,9。
(3)所有子串指的是“左”或“右”开始的子串,以诸如“1右2左”的连续重复子串不计算为重复子串。
你的任务是:对于给定一个数值串(串的长度<=100000),请你编程求出第一次出现的最长重复子串。
输入:输入文件为1行,它是一串数值串。
输出:输出文件为1行,它是输入文件中数值串的第一次出现的最长重复子串。如果无重复子串则输出字符串“NO”。
string.in :
L1R2L2L4R5L3L4R5L3R4R5L3R4R5R6L1
String.out:
L4R5L3
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
int main()
{
int begin=0,end=0,f=0,l;
char a[100001];
cin>>a;
l=strlen(a);
for (int i=0;i<l-4;i+=2)//两个字符为一组
for (int j=i+2;j<=i+(l-i)/2;j+=2)//j在 i的下一位非数字的符号到剩余符号的一半 取值
if (equal(a+i,a+j,a+j))/*equal算法是逐一比较两个序列的元素是否相等
表示num数组从i开始到j区间内的字符串是否与从j开始的字符串相同 */
{
if (j-i>end-begin)
{
begin=i;
end=j;//由于j是下一组的第一个字符,所以最后输出时不输出a[end]
f=1;
}
if (j==i+(l-i)/2) break;
}
if (f)
for (int i=begin;i<end;i++) cout<<a[i];
else cout<<"NO"; }
codevs 1061 重复子串的更多相关文章
- [LeetCode] Longest Substring Without Repeating Characters 最长无重复子串
Given a string, find the length of the longest substring without repeating characters. For example, ...
- 【POJ 3693】Maximum repetition substring 重复次数最多的连续重复子串
后缀数组的论文里的例题,论文里的题解并没有看懂,,, 求一个重复次数最多的连续重复子串,又因为要找最靠前的,所以扫的时候记录最大的重复次数为$ans$,扫完后再后从头暴力扫到尾找重复次数为$ans$的 ...
- 【POJ 3261】Milk Patterns 可重叠的k次最长重复子串
可重叠的k次最长重复子串 #include<cstdio> #include<cstring> #include<algorithm> using namespac ...
- spoj687 后缀数组重复次数最多的连续重复子串
REPEATS - Repeats no tags A string s is called an (k,l)-repeat if s is obtained by concatenating k& ...
- LeetCode:Longest Substring Without Repeating Characters(最长不重复子串)
题目链接 Given a string, find the length of the longest substring without repeating characters. For exam ...
- poj 1743 二分答案+后缀数组 求不重叠的最长重复子串
题意:给出一串序列,求最长的theme长度 (theme:完全重叠的子序列,如1 2 3和1 2 3 or 子序列中每个元素对应的差相等,如1 2 3和7 8 9) 要是没有差相等这个条件那就好办 ...
- POJ 1743 (后缀数组+不重叠最长重复子串)
题目链接: http://poj.org/problem?id=1743 题目大意:楼教主の男人八题orz.一篇钢琴谱,每个旋律的值都在1~88以内.琴谱的某段会变调,也就是说某段的数可以加减一个旋律 ...
- POJ 3261 Milk Patterns (求可重叠的k次最长重复子串)+后缀数组模板
Milk Patterns Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 7586 Accepted: 3448 Cas ...
- POJ 1743 Musical Theme (后缀数组,求最长不重叠重复子串)(转)
永恒的大牛,kuangbin,膜拜一下,Orz 链接:http://www.cnblogs.com/kuangbin/archive/2013/04/23/3039313.html Musical T ...
随机推荐
- Nginx+Keepalived主备切换(包含nginx服务停止)
原文地址:http://blog.sina.com.cn/s/blog_79ac6aa80101bmed.html Nginx+Keepalived主备切换(包含nginx服务停止) 环境: VM中4 ...
- Java学习日记9-异常
异常(Exception) 一.什么是异常? 异常就是程序中的错误,比如数组越界.访问空指针等.在Java中,一切皆对象,异常也不例外.所有的异常都是派生于Throwable类的一个实例对象. 二.异 ...
- [LeetCode] 219. Contains Duplicate II 解题思路
Given an array of integers and an integer k, find out whether there are two distinct indices i and j ...
- 实现字符串匹配的KMP算法
KMP算法是Knuth-Morris-Pratt算法的简称,它主要用于解决在一个长字符串S中匹配一个较短字符串s. 首先我们从整体来把我这个算法的思想. 字符串匹配的朴素算法: 我们容易想到朴素算法, ...
- JavaScript String 对象实例深入研究
本文主要介绍并分析JavaScript中String对象的具体用法,以及和String对象相关的方法,方便开发者在JavaScript开发中更好地处理字符串. 1. 介绍 String 对象,对字符串 ...
- Sublime text 3 格式化HTML/css/js/json代码 插件
JsFormat: 这里下载这插件包 https://github.com/jdc0589/JsFormat ,点油下角的zip就能下载 插件包放到sublime安装目录的Data\Packages目 ...
- Sublime Text 2.0.2 注册码
Sublime Text 2.0.2 注册码 直接输入注册码就可以了----- BEGIN LICENSE -----Andrew WeberSingle User LicenseEA7E-85560 ...
- JAVA 多线程同步与互斥
1. 为什么需要互斥: 互斥操作 保证了 多线程操作的 原子性 , java的 互斥 语义 有 synchronized 关键字 提供. 主要方式 有 同步代码块 和 同步方法 两种 2. ...
- LINUX更改时区和时间
因为公司运营海外游戏,服务器也多数放在国外,有时候要求服务器时区和时间要与所服务的地区一致,这里就涉及到更改服务器时区和时间的问题: 下面以一台在美国的服务器为例,我们的IDC提供商是一家德国公司,服 ...
- NYOJ 284 坦克大战 bfs + 优先队列
这类带权的边的图,直接广搜不行,要加上优先队列,这样得到的结果才是最优的,这样每次先找权值最小的,代码如下 #include <stdio.h> #include <iostream ...