什么是字典中少量模式的最简单快速的字符串匹配算法,以找到一个小字符串
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了什么是字典中少量模式的最简单快速的字符串匹配算法,以找到一个小字符串相关的知识,希望对你有一定的参考价值。
我有大量包含小对话的文本文件,这些对话本身包含小字符串(<1000字)。我还有一个我想在这些文本文件中搜索的标签和短语列表。
所以,我需要一个搜索算法
- 容易明白。
- 易于实施。
- 并在时间效率方面给出相当好的结果(对于每个文件)
有什么建议?
答案
当您想要在一组单词中查找单词时,选择的数据结构就是trie。 trie是一棵树,每个节点都传达一个字母并指向词汇表中的所有下一个字母。
例如,如果集合是'cat'
,'carrot'
,'clock'
,则trie的根将指向节点'c'
。然后'c'
将指向'a'
和'l'
,'a'
指向't'
和'r'
。 trie结构可以继续到单词的结尾,或者您可以单独保留单个后缀。
现在,如果你搜索单词'card'
,你将遵循节点'c' > 'a' > 'r'
并看到没有'd'
并得出结论该单词不存在。
https://en.wikipedia.org/wiki/Trie
你可以根据你的情况调整这个想法,将“word”替换为“sentence”,将“letter”替换为“word”。由于单词集大于字母表,您必须在每个节点中使用散列图,以将可能的单词与指向以下节点的指针相关联。
要解决您的初始问题,请依次取出每个单词并进行比较,并将其与其继承者匹配。我猜总的运行时间将是文本中单词数量乘以匹配的平均长度的顺序,乘以执行hashmap查找所需的时间。
为了便于开发,请考虑首先在标准trie中实现单词查找。
以上是关于什么是字典中少量模式的最简单快速的字符串匹配算法,以找到一个小字符串的主要内容,如果未能解决你的问题,请参考以下文章