【问题标题】:c++ - Efficient algorithm to search for matching substringsc++ - 搜索匹配子串的高效算法
【发布时间】:2023-03-08 08:06:01
【问题描述】:
示例:我有很多这样的模式:
sexy hello
sex every
sex example
...
我有一个这样的查询:
hello, sexygirl.
此查询将匹配第一个模式。因为它包含了性感和你好。
注意:性感和少女没有空白。
有没有有效的方法来解决这个问题?
【问题讨论】:
标签:
c++
algorithm
full-text-search
suffix-tree
【解决方案1】:
这可能会对您有所帮助,即使它是在 c 中,很多概念都是相同的:
What is the fastest substring search algorithm?
首先,您所拥有的大多数模式似乎都包含“性”一词,因此将其包含在您的查询中是没有意义的。因此,您应该对查询进行标记,并删除所有停用词。这将为您提供简单的字符串比较,并且由于您的模式可能会有与之配对的数据,例如文本响应,您可以使用哈希函数来比较字符串,然后操作与模式对应的数据. (例如:响应“Hello sexygirl”,将其转换为 ["Hello", "sexygirl"],然后将 ["Hello"]
您可以研究的另一件事是马尔可夫链,它通常用于生成文本,但在这种情况下可能会有所帮助。
马尔可夫链的小例子do