2008-12-08 55 views
4

我有SQL調用,我想用它來檢測環路(因此不必要的重複的SQL調用)的序列,但它讓我思考這個更一般的問題。如何檢測字符串列表中的重複?

給出一個列表,說 [a,b,c,b,c,a,b,c,b,c,a,b,b]

有沒有一些方法,我可以把它轉換成 a,[[b,c]*2,a]*2,b*2

,或者[a,[b,c]*2]*2,a,b*2

也就是說,檢測重複(可能是嵌套的)。

+0

這個問題的答案在這裏:http://stackoverflow.com/questions/6874250/lossless-hierarchical-run-length-encoding – 2016-01-06 07:19:18

回答

0

如果你可以先進行排序,然後很容易經歷更多的時間來尋找重複操作。當然,像SQL查詢這樣的自由格式排序聽起來有點可怕。

0

我在這一領域的專家,但你可能想看看一些壓縮算法,在我看來,這是相當正是他們做什麼。

0

如果字符串足夠大,一個有趣的方法是在其上運行壓縮工具(如gzip,bzip或7zip)。這些工具通過定位重複(各級),並通過指針取代他們的文字(或字典)的初審工作。你實現的壓縮是重複的度量。轉儲文件(你將不得不編寫代碼來做到這一點)會給你重複的內容。

+0

懷疑這將工作,因爲壓縮程序將愉快地使用子字符串,並將忽略SQL命令的界限。 – derobert 2008-12-08 15:45:01