2012-03-15 63 views
0

我有一大堆固定長度的字符串(每個字符長度可能爲100個字符),我希望能夠相互比較以找到所有字符串之間最常見的字符組合。如何將字符串與字符串數據庫進行比較和存儲,以獲取常見組合?

將每個新字符串與已收集字符串數據庫進行比較的好方法是什麼?然後,將結果和字符串存儲到數據庫中的好方法是什麼?什麼樣的數據結構適合這個?

我的確標記了「ruby」這個問題,但我認爲它很通用,所以尋找任何真正的東西。

回答

1

如果你的意思是這3個字符串:

ABC BCD CDE

你想要得到以下的輸出:

a - 1 
b - 2 
c - 3 
d - 2 
e - 1 
ab - 1 
bc - 2 
cd - 2 
de - 1 
abc - 1 
bcd - 1 
cde - 1 

然後我會建議TRIEhttp://en.wikipedia.org/wiki/Trie),並存儲出現的次數節點中每個字符組的首字母(每找到一個新匹配,就加1)。

然後該算法可以很容易

開始用「ABC」和而你遍歷樹(可以創建新的節點)加1,訪問每一個節點上,然後用「BC」繼續,然後用「C 」。和'bcd'一樣。去「BCD」,「CD」,「d」

在遍歷樹並添加1〜拜訪你應該覆蓋所有的雙打每個節點,三倍等

希望它能幫助,rezna

相關問題