2013-03-13 104 views
0

我試圖解決「查找一組字母」問題的所有可能的單詞。有一些很好的答案,但我仍然無法弄清楚。SQL哈希表字

在我的第一個測試中,我把整個字典放在一個數組中,然後遍歷每個字母。這是非常快的,但它需要永遠加載數組中的字典,並需要大量的內存。

所以我需要存儲字典(750,000)字母是一個sql數據庫。

我想有兩個解決方案,以找出所有可能的話:

  1. 使返回所有可能的單詞
  2. 做一個簡單的查詢返回數據庫中的一小部分文字提前查詢可能是可能的,然後快速循環訪問該數組,然後衡量單詞。

問題?: 它必須是超級快。 iPhone 4需要能夠在5-6秒內獲得所有可能的單詞,所以它不會妨礙遊戲。

這裏有一個類似的問題: IOS: Sqlite. Find record fast

Sulthans答案似乎是個好主意。創建一個哈希表,然後:

ASCII字母的位掩碼(忽略任何非ASCII字母)。位 位置0表示單詞包含「a」,位置1包含「b」 等。如果我們爲我們的字母創建相同的位掩碼,我們可以選擇 等單詞,如(wordMask &〜lettersMask)== 0

你如何製作位掩碼,散列表,以及如何構建sql查詢?

謝謝

回答

2

sql可能不是最好的選擇。用於存儲單詞集合的傳統數據結構稱爲Trie。我確信你可以找到那裏的實現。其他人將有一個答案。

我設想的算法是對給出的字母進行排列,然後檢查每個排列是否在Trie中。