Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 查找字符串超弦的最快数据结构?_Java_Algorithm_Search_Data Structures - Fatal编程技术网

Java 查找字符串超弦的最快数据结构?

Java 查找字符串超弦的最快数据结构?,java,algorithm,search,data-structures,Java,Algorithm,Search,Data Structures,我有一个巨大的词汇表,希望找到词汇表中包含给定字符串的所有单词。这意味着我想在整个词汇表中找到给定字符串的所有超弦。然而,树数据结构适合contains()查询,并且存在一些查找子字符串的算法,但我找不到任何算法来解决这个问题 我想在Java中使用此算法(或数据结构)。您正在寻找一种新的算法 其思想是,给定一个字符串,该字符串某个后缀的每个前缀都是该字符串的子字符串(每个子字符串都是某个后缀的前缀) 这意味着,您可以创建单词的后缀树,其中每个后缀的“叶”指向原始字符串 现在,搜索一个子字符串,您

我有一个巨大的词汇表,希望找到词汇表中包含给定字符串的所有单词。这意味着我想在整个词汇表中找到给定字符串的所有超弦。然而,树数据结构适合contains()查询,并且存在一些查找子字符串的算法,但我找不到任何算法来解决这个问题

我想在Java中使用此算法(或数据结构)。

您正在寻找一种新的算法

其思想是,给定一个字符串,该字符串某个后缀的每个前缀都是该字符串的子字符串(每个子字符串都是某个后缀的前缀)

这意味着,您可以创建单词的后缀树,其中每个后缀的“叶”指向原始字符串

现在,搜索一个子字符串,您需要跟随输入子字符串的节点遍历树,然后执行某种树遍历(如),以查找所有可到达的叶子。每个这样的叶子都是某个字符串的后缀,查询字符串是该字符串的子字符串


这个解决方案非常便宜,输出大小和查询大小是线性的。

这听起来像是自然语言处理中的词干问题。存在现有的优化词干分析器。如果您想编写自己的代码,请查看开源词干分析器的源代码以获得灵感。