2011-05-09 21 views
2

我很好奇關於文本算法的一些東西。C文本算法

例如,我們有二進制字:1011101110001101 以及如何在這個詞中搜索特定的固定子序列?

例如如何找到最長的固定子序列(讓我們稱之爲LFS)在具有相同數量的1和0的字?

另外,如何找到更多的1比0的LFS在其中呢?

例如: word:1001010 我們正在搜索等量的1和0的LFS。

所以這LFS將100101

但是,隨着1比0的,我們將有:101

如何更快這比解決爲O(n^2)?

Chris。

+0

這是功課?聽起來很像它... – RedX 2011-05-09 11:32:18

+2

C或C++?標題說C,標籤說C++,語言不一樣,與普通(錯誤)的觀點相反。 – 2011-05-09 11:32:27

+0

不,它不是作業,我正在努力學習好奇的事情,因爲我打算在明年的IT比賽中嘗試。 – Spinach 2011-05-09 11:39:32

回答

4

您可以在輸入中輸入Trie

這將幫助您找到LFS字符串。

您可以將創建算法更改爲計數1和0,然後您將很容易在子串節點上找到這些數字。

Suffix Tree以及..

創建= O(N)
對於搜索,你可能會做一些像BFS也像O(N)