2015-10-03 22 views
1

我有一个动态填充的向量,并且将始终包含一个包含字符和长度的重复序列,但我不确定。例如,载体能包含以下元素:如何查找并返回一个向量内的重复序列

0 1 1 2 3 1 0 1 1 2 3 1 0 1 1 2 

,并在该载体的重复序列是:

0 1 1 2 3 1 

如何搜索载体和找到这些元素。我想把找到的序列放在一个新的向量中。我首先假定它只需要一个简单的for循环并检查数组中第一个和第二个元素的重复,所以在上面的情况下,当我第二次达到0 1时,我将退出循环,但问题在于它不能假定前2个元素将处于重复模式,因此

0 1 2 3 2 3 2 3 2 3 

可以是向量中的有效元素。有任何想法吗?

+0

也许是指这样的:http://stackoverflow.com/questions/10355103/finding-the-longest-repeated-substring –

+0

http://stackoverflow.com/questions/11090289 /发现,最长的重复序列-IN-A-字符串。这个问题相当于只需稍微调整即可找到最大的模式。在寻找最长模式时,算法会丢弃最近发现的模式,如果它小于新发现的模式,但在您的情况下,如果新的较长模式不与旧模式重叠,您可能需要保留它。 – Ritesh

+0

你想要*最长*重复序列,是吗? – Beta

回答

0

一般情况下(无限的结果),不可能知道序列,因为像这样的事情可能发生100万0,然后1,1000之后0你会认为该序列只有零,但如果矢量是有限的 你可以写somethink像

for(I..VECTORSIZE/2) 
if(VECTORSIZE % I == 0) 
CHECK IF SUBVECTOR(0,I) == SUBVECTOR(I,I*2) == SUBVECTOR(I*2,I*3).... 
    return I 
else continute; 
相关问题