2015-10-03 62 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; 
相關問題