【发布时间】:2020-08-20 18:57:33
【问题描述】:
我在 Python 中有一组子字符串,并想在字符串中找到每个出现的子字符串。例如
# inputs
needles = {'love', 'hot', 'dogs'}
haystack = "I love hot dogs; hot dogs are delicious."
# output
indexes = {('love', 2), ('hot', 7), ('dog', 11), ('hot', 17), ('dog', 21)}
我目前正在使用一种蛮力方法来查找字符串中每个子字符串的所有出现,如果 k、n 和 m 是最长字符串的长度、针数和干草堆的长度。我想知道 trie 或任何其他方法是否会使这更快。
编辑:很多针不止一个词。
【问题讨论】:
-
你能用
re模块吗? -
您希望得到什么样的答案?例如。最好的算法是使用前缀树,但这有点复杂。在实践中,您可以使用更简单的方法,例如 O(mn)
-
我没有提前知道,所以我无法预编译正则表达式,这意味着它不会被优化为只是为了搜索@AndrejKesely
-
@KevinLu “我没有提前打针”是什么意思?你如何得到它们?
-
基本上我对另一个服务进行 API 调用以获取一组关键术语,但它们不提供关键术语的索引,因此我使用它们提供的关键术语手动搜索关键术语。如果我使用正则表达式,每次调用搜索函数时都需要一段时间来重新编译正则表达式。 @wim
标签: python string algorithm optimization substring