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 ...
随机推荐
- HDOJ 1018 Big Number(大数位数公式)
Problem Description In many applications very large integers numbers are required. Some of these app ...
- C#中枚举类型和int类型的转化
先定义一个枚举类型 , 初中, 高中,大学 }; int ->enum int d=2; PropertyType a=(PropertyType)d; int <- enum Prop ...
- 简单的多表插入(oracle)
简单的多表插入语句: insert all into 表1(字段1,2...) values(值1,值2......) into 表2(字段1,2...)) values(值1,值2......) s ...
- 提交表单时的等待(loading)效果
$(document).ready(function () { $("body").prepend('<div id="overlay" class=&q ...
- iOS常用的开源类库
开发几个常用的开源类库及下载地址: 引用 1.json json编码解码 2.GTMBase64 base64编码解码 3.TouchXML xml解析 4.SFHFKeychainUtils 安全保 ...
- 微信公众账号【iOSDevTip】推出新栏目【看大牛】
首先你须要关注微信公众账号[iOSDevTip] 基于微信公众平台数据分析.非常easy发现.移动端project师都喜欢关注互联网创业资讯.都说.一个不关注互联网创业的iOS开发不是一个合格的互联网 ...
- freemarker的使用心得
freemarker眼下尽管使用的公司不多,可是在某些时候就必须使用,当须要遍历json数据的时候,眼下市面上的好多显示组件都达不到要求唯一能用的也就仅仅有freemarker了.在java里使用的模 ...
- COM编程入门第二部分——深入COM服务器
本文为刚刚接触COM的程序员提供编程指南,解释COM服务器内幕以及如何用C++编写自己的接口.继上一篇COM编程入门之后,本文将讨论有关 COM服务器的内容,解释编写自己的COM接口和COM服务器所需 ...
- Android 监控网络状态
public static boolean isNetworkAvailable(Context context) { ConnectivityManager connectivity = (Conn ...
- jsp if else c标签 总结
JSTL标签使用方法 keyword:JSTL标签.<c:choose>.<c:forEach>.<c:forTokens>.<c:if>.<c: ...