2012-06-19 81 views
0

可能重複:
Find longest repetitive sequence in a string尋找最常見的模式

我工作的問題,我需要發現運作重複最格局。

爲了簡單和方便起見,請考慮這個字符串:

What is Lorem Ipsum? 
Lorem Ipsum is simply dummy text of the printing and typesetting industry. 
Lorem Ipsum has been the industry's standard dummy text ever since the 1500s... 

序列重複大多數(最初考慮字符串長度越大3個字符,例如)爲「Lorem存有」。 「Lorem」和「Ipsum」當然也會重複相同的次數,但如果重複相同的次數,則較長的字符串優先於較短的次數。

什麼樣的算法可以高效地找到這種模式,最好在Python中?

+1

如果一個較短的模式重複次數多於一個較長的模式,您會選擇哪一個? – fraxel

+0

較短(例如,最初設置爲較長的​​三位) – matt

+0

謝謝,這與我的問題相同。請關閉此問題 – matt

回答

0

正如@fraxel指出的那樣,您需要多指定一個問題,但這聽起來像是動態編程(http://en.wikipedia.org/wiki/Dynamic_programming)問題。但是,如果沒有進一步說明,就不可能知道你需要什麼樣的算法。例如,您在制定模式的定義時存在另一個不確定性。一個模式是一個簡單的字符串?或「ababa」被認爲與「acaca」相同的模式,因爲它將匹配正則表達式或glob模式「a * a * a」。

+0

是的模式是簡單的Python字節串,或者如果理解更容易考慮長串十進制數。我使用常識的字模式,並沒有暗示正則表達式的使用。 – matt