题意: 给出一列数据,问你其中重复的最长连续子串的长度 但是有要求: 1. 长度至少为 5 . 2. 两串可以不相等,但两串每个对应位置的数字相减差值固定 (即相同变化)分析: 因为子串变化相同,故可先把原数组前后相减, 则求出差值数组的最长重复子串的长度再 +1 就是答案. 最长重复子串的长度: ...
分类:
其他好文 时间:
2016-08-12 00:52:23
阅读次数:
187
后缀数组看了好几个小时,才明白了工作原理,了解后缀数组可以看下面的论文 论文: 罗穗骞《后缀数组——处理字符串的有力工具》,百度很容易找到 主要介绍几个简单应用 1.模式串匹配 2.可重复最长重复子串 3.不可重复最长重复子串 4.可重叠最长 k-重复子串 5.重复次数最多子串 6.最长回文串 7. ...
分类:
编程语言 时间:
2016-08-08 17:12:53
阅读次数:
352
后缀数组。求不可重叠最长重复子串。 二分答案+验证。每一次二分,将排序完序的后缀按顺序进行分组。每组内任意两个的最长公共前缀要>=二分值。如果有一组内存在两个后缀的SA值相差大于等于二分值,那么这个二分值可行。 ...
分类:
其他好文 时间:
2016-07-30 13:22:55
阅读次数:
120
在上个星期面试一家公司的笔试题上面的最后一道题就是写程序查找一个字符串的最长重复子串。当时想了很长时间没想出什么好方法,就把一个算法复杂度比较高的算法写上去了。回来上机把那个算法写了一遍测试没问题,然后自己又到网上面查查还有什么方法,然后发现好像有种叫做后..
分类:
编程语言 时间:
2016-07-12 00:14:27
阅读次数:
450
题目链接 题意:可重叠的 k 次最长重复子串。给定一个字符串,求至少出现 k 次的最长重复子串,这 k 个子串可以重叠。 分析:与POJ 1743做法类似,先二分答案,height数组分段后统计 LCP>=m 的子串的个数。 ...
分类:
编程语言 时间:
2016-05-01 09:51:37
阅读次数:
256
题目链接 题意:给定n个数字,求超过5个数字的,最长的,变化相同的,不相交的重复子串 分析:男人8题中的一题!数列相邻两项做差,形成新数列,即求数列中的最长重复子串(不可相交)。 后缀数组+二分答案。假如二分得到答案L,如何知道它是可行的呢? 因为对于排序后的后缀,Lcp ( Suffix ( Li ...
分类:
编程语言 时间:
2016-05-01 09:47:11
阅读次数:
171
题意:求一个字符串里两个不重叠的最长重复子串代码如下: 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 7 int sa[20010],rank[20010],y[20010],Rsort[...
分类:
其他好文 时间:
2015-12-15 18:08:44
阅读次数:
207
和上一题(POJ1743,上一篇博客)相似,只是二分的判断条件是:是否存在一段后缀的个数不小于k 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 10 ...
分类:
编程语言 时间:
2015-11-19 18:26:13
阅读次数:
231
原问题,其实是找最长的相似子串,所谓相似就是一个子串每个值加上一个偏移值可以得到另一个子串。我们先求原数组的差值数组,对新数组求后缀数组,二分答案,判定是否有某个Height数组中的sa最小值与最大值之差大于当前枚举的子串长度。#include #include #include #include ...
分类:
其他好文 时间:
2015-09-18 23:06:57
阅读次数:
222
1.给定一个字符串,求最长重复子串,这两个子串可以重叠。 这道题是后缀数组的一个简单应用。做法比较简单,只需要求 height 数组里的最大值即可。2.给定一个字符串,求最长重复子串,这两个子串不能重叠。 这题比上一题稍复杂一点。先二分答案,把题目变成判定性问题:判断是否存在两个长度为 ...
分类:
编程语言 时间:
2015-09-08 20:09:27
阅读次数:
228