Java 查找字符串超弦的最快数据结构?
我有一个巨大的词汇表,希望找到词汇表中包含给定字符串的所有单词。这意味着我想在整个词汇表中找到给定字符串的所有超弦。然而,树数据结构适合contains()查询,并且存在一些查找子字符串的算法,但我找不到任何算法来解决这个问题 我想在Java中使用此算法(或数据结构)。您正在寻找一种新的算法 其思想是,给定一个字符串,该字符串某个后缀的每个前缀都是该字符串的子字符串(每个子字符串都是某个后缀的前缀) 这意味着,您可以创建单词的后缀树,其中每个后缀的“叶”指向原始字符串 现在,搜索一个子字符串,您需要跟随输入子字符串的节点遍历树,然后执行某种树遍历(如),以查找所有可到达的叶子。每个这样的叶子都是某个字符串的后缀,查询字符串是该字符串的子字符串Java 查找字符串超弦的最快数据结构?,java,algorithm,search,data-structures,Java,Algorithm,Search,Data Structures,我有一个巨大的词汇表,希望找到词汇表中包含给定字符串的所有单词。这意味着我想在整个词汇表中找到给定字符串的所有超弦。然而,树数据结构适合contains()查询,并且存在一些查找子字符串的算法,但我找不到任何算法来解决这个问题 我想在Java中使用此算法(或数据结构)。您正在寻找一种新的算法 其思想是,给定一个字符串,该字符串某个后缀的每个前缀都是该字符串的子字符串(每个子字符串都是某个后缀的前缀) 这意味着,您可以创建单词的后缀树,其中每个后缀的“叶”指向原始字符串 现在,搜索一个子字符串,您
这个解决方案非常便宜,输出大小和查询大小是线性的。这听起来像是自然语言处理中的词干问题。存在现有的优化词干分析器。如果您想编写自己的代码,请查看开源词干分析器的源代码以获得灵感。