如何以优化的方式查找非常大的文件中是否存在单词?

时间:2018-05-07 17:37:21

标签: java string search random

游戏是这样的: 播放器在[0..10]中输入多个元音。 我们生成10输入(元音)辅音,最终显示无序的10个字母。 然后玩家尝试用给定的字母形成可能的最长单词。

问题: 我们有一个重要大小的字典来查找单词是否有效。

搜索它的最佳方法是什么? 我最好的两个想法是:

  1. 将单词分成不同的文件,这些文件由存储在其中的单词内的元音数量索引。
  2. 使用Streamer()。 filter方法使用一个返回单词中元音数量的函数。
  3. 就时间复杂度而言,两者看起来都非常昂贵(我不知道我是否正确使用该术语)。

    我希望我很清楚。

1 个答案:

答案 0 :(得分:1)

我假设你正在使用java。如果是这样,您可以将所有单词存储在HashSet<String>中。

在存储桶中设置商店数据。因此,当你搜索一个单词时,jvm会首先找到一个可能有这个单词的存储桶,然后查看该存储桶以确认该单词是否存在。

此方法类似于您提到的选项1。所有的复杂性都隐藏在你身上。你只需要调用contains方法。 jvm在幕后为你做了这一切。

    HashSet<String> dictionary = new HashSet<String>();

    //add words to dictionary
    dictionary.add("apple");

    //Returns true if this set contains the specified element. 
    dictionary.contains("apple");