0
我有一大堆固定長度的字符串(每個字符長度可能爲100個字符),我希望能夠相互比較以找到所有字符串之間最常見的字符組合。如何將字符串與字符串數據庫進行比較和存儲,以獲取常見組合?
將每個新字符串與已收集字符串數據庫進行比較的好方法是什麼?然後,將結果和字符串存儲到數據庫中的好方法是什麼?什麼樣的數據結構適合這個?
我的確標記了「ruby」這個問題,但我認爲它很通用,所以尋找任何真正的東西。
我有一大堆固定長度的字符串(每個字符長度可能爲100個字符),我希望能夠相互比較以找到所有字符串之間最常見的字符組合。如何將字符串與字符串數據庫進行比較和存儲,以獲取常見組合?
將每個新字符串與已收集字符串數據庫進行比較的好方法是什麼?然後,將結果和字符串存儲到數據庫中的好方法是什麼?什麼樣的數據結構適合這個?
我的確標記了「ruby」這個問題,但我認爲它很通用,所以尋找任何真正的東西。
如果你的意思是這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
然後我會建議TRIE(http://en.wikipedia.org/wiki/Trie),並存儲出現的次數節點中每個字符組的首字母(每找到一個新匹配,就加1)。
然後該算法可以很容易
開始用「ABC」和而你遍歷樹(可以創建新的節點)加1,訪問每一個節點上,然後用「BC」繼續,然後用「C 」。和'bcd'一樣。去「BCD」,「CD」,「d」
在遍歷樹並添加1〜拜訪你應該覆蓋所有的雙打每個節點,三倍等
希望它能幫助,rezna