码迷,mamicode.com
首页 >  
搜索关键字:最长重复子串    ( 75个结果
面试题[后缀数组]: 最长重复子串
题目:给定一个字符串,求出最长重复子串。 这个题目可以用后缀数组来解:对后缀数组排好序,这样重复的子串就在相邻的后缀中找就可以了。我的C++代码实现如下:class Solution { public: string LongestRepeatingSubstring(string str) { size_t len = str.size(); vec...
分类:编程语言   时间:2015-03-31 22:29:32    阅读次数:202
最长公共子序列|最长公共子串|最长重复子串|最长不重复子串|最长回文子串|最长递增子序列|最大子数组和
参考:http://www.ahathinking.com/archives/124.html最长公共子序列1、动态规划解决过程1)描述一个最长公共子序列 如果序列比较短,可以采用蛮力法枚举出X的所有子序列,然后检查是否是Y的子序列,并记录所发现的最长子序列。如果序列比较长,这种方法需要指数级时间....
分类:编程语言   时间:2015-03-18 23:05:17    阅读次数:370
POJ 1743 Musical Theme (后缀数组,求最长不重叠重复子串)
题意: 有N(1 “主题”是整个音符序列的一个子串,它需要满足如下条件: 1.长度至少为5个音符 2.在乐曲中重复出现(可能经过转调,“转调”的意思是主题序列中每个音符都被加上或减去了同一个整数值。) 3.重复出现的同一主题不能有公共部分。 思路:是要求最长不重叠重复的子串,如果没有不重叠的限制条件,那么height中的最大值即可 现在对于这题需要二分出答案,二分出最长重复子串...
分类:编程语言   时间:2015-03-17 21:58:38    阅读次数:162
SPOJ 687. Repeats(后缀数组求最长重复子串)
题目大意:给你一个串让你求出重复次数最多的连续重复子串的重复次数。 解题思路:论文上给出的解答是: 这还没完,因为经过这两个点的情况还不完备,应还可以假设起点在 [ i*j-i+1, i*j-d],其中 d = i-L/i (d = i-L%i)其意义为根据已知的匹配长度,可以将起点往前移动的范围,太靠后将不能够构造出比之前更好的解。如果要求出某个最多的连续重复子串的最小字典序子需要枚...
分类:编程语言   时间:2015-01-26 17:10:25    阅读次数:296
POJ 3693 Maximum repetition substring(后缀数组求最长重复子串)
题目大意:和spoj687类似,就是当长度相同是需要输出一个最小的字典序的序列。 解体思路:这次需要枚举所有的从i到d = i-L/i (d = i-L%i)的位置,然后记录保证最大值的同时,求出来字典序最小的。 Maximum repetition substring Time Limit: 1000MS   Memory Limit: 65536K ...
分类:编程语言   时间:2015-01-26 17:03:45    阅读次数:175
POJ 3261 可重叠的 k 次最长重复子串【后缀数组】
这也是一道例题给定一个字符串,求至少出现 k 次的最长重复子串,这 k 个子串可以重叠。算法分析:这题的做法和上一题差不多,也是先二分答案,然后将后缀分成若干组。不同的是,这里要判断的是有没有一个组的后缀个数不小于 k。如果有,那么存在k 个相同的子串满足条件,否则不存在。这个做法的时间复杂度为 O...
分类:编程语言   时间:2015-01-26 11:37:26    阅读次数:238
后缀数组学习笔记
后缀数组的用处:快速求出两个后缀Suffix(i), Suffix(j)的最长公共前缀(LCP, Longest Common Perfix)以下一张图片可谓简洁明了。下面贴上模板1.求最长重复子串,可以重叠void solve_duplicate_substr(int n){//duplicate...
分类:编程语言   时间:2015-01-25 15:04:43    阅读次数:311
后缀数组(至少重复k次的可重叠的最长重复子串)—— POJ 3882
后缀数组(至少重复k次的可重叠的最长重复子串)...
分类:编程语言   时间:2015-01-25 13:56:16    阅读次数:210
POJ 1743 Musical Theme(后缀数组)
题目大意:给出n个数字。首先将这n个数前后做差,得到另一个长度是n-1的序列。求出这个序列的最长重复子串,且这些子串不能重叠。 PS:这题论文上有解析。 解题思路:先二分答案,把题目变成判断性问题:判断是否存在两个长度为k的字串是否相同的,且不重叠。解决这个问题的关键还是利用height数组。把排序后的后缀数组分成若干组,其中每组的后缀之间的height值都不小于k。 容易看出,有希望成...
分类:编程语言   时间:2015-01-22 18:08:28    阅读次数:238
【POJ】1743 Musical Theme
http://poj.org/problem?id=1743题意:不可重叠最长重复子串,n#include using namespace std;const int N=20015;void sort(int *x, int *y, int *sa, int n, int m) { static ...
分类:其他好文   时间:2015-01-12 22:17:25    阅读次数:153
75条   上一页 1 ... 4 5 6 7 8 下一页
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!