【发布时间】:2019-12-23 20:23:46
【问题描述】:
想象有一个大的字符串 S 数组。从该数组中我只需要获取那些包含特定子字符串的字符串。例如,如果我的数组是
String s [] = {"hello world", "back to hell", "say hello world"};
我的关键字是“你好”,那么它应该返回我的第一个和最后一个元素。
我尝试使用 KMP 和 Boyer-Moor 算法检查数组中的每个字符串是否包含子字符串,但这需要太多时间。
然后我了解了 Aho-Corasick 算法。我仍在查找它,但似乎它需要一组子字符串和一个大字符串来匹配,而我想要的恰恰相反。
因此,我一直在寻找有关如何为我的目的修改 Aho-Corasick 算法的建议,或其他实现这些目的的方法。将不胜感激任何建议。
【问题讨论】:
-
这是您将执行一次还是多次的操作?换句话说,是否可以进行昂贵的操作来构建一个可以多次用于此搜索的数据结构?
-
会做很多次,所以是的,没关系。
标签: arrays string algorithm aho-corasick