Python 在字典中有少量模式的情况下,最简单、最快速的字符串匹配算法是什么

Python 在字典中有少量模式的情况下,最简单、最快速的字符串匹配算法是什么,python,algorithm,pattern-matching,string-matching,Python,Algorithm,Pattern Matching,String Matching,我有大量包含小对话的文本文件,这些对话本身包含小字符串当您想在一组单词中查找一个单词时,选择的数据结构是trie。trie是一棵树,每个节点都传递一个字母,并指向词汇表中的所有下一个字母 例如,如果集合为“cat”、“carrot”、“clock”,则trie的根将指向节点“c”。然后‘c’将指向‘a’和‘l’,而‘a’将指向‘t’和‘r’。trie结构可以一直延续到单词的末尾,也可以单独保留单个后缀 现在,如果您搜索单词“card”,您将按照节点“c”>“a”>“r”进行搜索,发现没有“d”,

我有大量包含小对话的文本文件,这些对话本身包含小字符串当您想在一组单词中查找一个单词时,选择的数据结构是trie。trie是一棵树,每个节点都传递一个字母,并指向词汇表中的所有下一个字母

例如,如果集合为“cat”、“carrot”、“clock”,则trie的根将指向节点“c”。然后‘c’将指向‘a’和‘l’,而‘a’将指向‘t’和‘r’。trie结构可以一直延续到单词的末尾,也可以单独保留单个后缀

现在,如果您搜索单词“card”,您将按照节点“c”>“a”>“r”进行搜索,发现没有“d”,并得出该单词不存在的结论

你可以根据自己的情况调整想法,逐字逐句、逐字逐句地替换。由于单词集大于字母表,因此必须在每个节点中使用hashmaps,将可能的单词与指向以下节点的指针相关联

要解决最初的问题,请依次使用每个单词,并将其与trie的后续单词进行比较和匹配。我猜总的运行时间是文本中的字数乘以匹配的平均长度,乘以执行hashmap查找所需的时间


为便于开发,首先考虑在标准TIE中实现单词查找。

简单且相当好的结果是主观的。请你试着重新表述你的问题,使它不那么抽象,好吗?对于大量的小文本文件,你最好使用正则表达式。非常容易实现,如果您了解regexp的基础知识,那么就很容易理解,非常好的性能,您可能会花费更多的时间来读取文件而不是搜索它们。您可以通过以下方式进一步加快它们的速度:相对容易理解、有良好的文档记录、易于实现的Python实现存在、快速且可靠。我对这个问题进行了评论,但请参见triegex-在regex中创建一个trie,这样您就可以两全其美:trie搜索是C语言的,而不是Python语言的。在这个特殊的例子中,我建议使用,它本质上是一个修改的trie。