0

朋友 我在一个包含 300,000 个单词(每行 1 个单词)的文本文件 (2MB) 中有一个按字母顺序排列的单词列表。由于它已经排序,我想进行快速字符串搜索,该搜索必须准确且不区分大小写。任何想法如何做到这一点?

必须使其尽可能快且不区分大小写。例如,

如果用户需要从文本文件中搜索单词“MAT”,则输出必须为 mat/MAT,并且不应包含 mate、matted 或任何此类单词。应该在最短的时间内生成输出。

编辑 - 我需要一个像类或算法这样的解决方案来完成它,比如 Pattern/matcher 或 BufferedReader/Scanner 等。

4

2 回答 2

1

如果您的单词列表已经排序,我能想到的最快方法是使用二分搜索。至于区分大小写的部分,只需在每个字符串(输入字符串和文件中要比较的字符串)上应用 ToUpper() 或 ToLower() 即可解决问题。

尽管我同意其他人的观点,但您应该为此使用数据库。

于 2013-03-27T16:02:10.083 回答
0

您最好的方法可能是将其正确存储到数据库中,这样您就必须搜索最少的数据量。

例如,每个字母表都有一个表,只有以该字母开头的单词。基本上这已经将搜索减少到 300,000 / 20 (26 - 减去一些很少单词的稀有字母)。

这可能已经完成了 300,000 个单词,但如果没有,您甚至可以更进一步并进行一些长度分离。

将所有单词保存到数据库中可能需要一段时间,但这对您的应用程序来说可能不是问题。

于 2013-03-27T15:57:59.773 回答