标签: java python algorithm
这是我的面试问题。给定一个字符串数组和一个字符串(haystack),采用该字符串数组的最快算法是什么,并找出数组中的每个字符串是否是haystack的子字符串。我认为最快的算法是找到haystack的所有子串并将它们存储在一个集合中,然后检查数组中的每个字符串是否为该集合中的成员资格,但是被告知这不是最快的方法。
然后,更难的问题:在haystack中返回第一次出现的substring的索引。由于我没有弄清楚第一部分是正确的,所以我在努力解决这个问题。
答案 0 :(得分:3)
听起来像是Aho-Corasick算法的工作。
答案 1 :(得分:0)
Suffix tree?我相信你们都可以测试子字符串并得到它们的起始索引。