我在发帖之前搜索了这个,但是我无法帮助我。 我正在使用java。我有一个300.000字的文件(已经按字母排序)。 我想在结构中加载这些单词并搜索我将通过的单词 存在与否。我想要一些最适合字符串搜索的东西。我见过 尝试(后缀树)和红黑树(TreeSet - 因为我只想要键,和 没有值 - 在java)。
请您考虑回答提供有关效率的一些解释 你的命题。谢谢。
修改 将通过加载文件来创建结构,并且将不再进一步 添加单词。 不需要区分大小写。 我不知道什么是干扰。我现在知道,但我不知道它是否会有所帮助。 该文件是一个字典(没有翻译,只是给定语言的单词)。
答案 0 :(得分:2)
哈希将是您的最佳解决方案。它以恒定时间搜索,因为它选择了log(n)时间。
如果你在创作时宣布这个集合足够大,你也可以在恒定时间内存储。
http://docs.oracle.com/javase/6/docs/api/java/util/HashMap.html
创建将及时:n,您需要将已排序的集合包含在单独的结构中。
这是一种针对搜索重复项而不是内存或添加数据而优化的解决方案。