簡體   English   中英

查找字符串中一組子字符串的所有位置的優化

[英]Optimization for finding all locations of a set of substrings in a string

我在 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)}

我目前正在使用蠻力方法來查找字符串中每個 substring 的所有出現,如果 k、n 和 m 是最長字符串的長度、針數和長度,則為 O(knm) 時間草垛。 我想知道嘗試或任何其他方法是否會使這更快。

編輯:很多針有不止一個詞。

有一些特殊的字符串搜索算法旨在尋找文本中的多種模式。

也許最著名的是Aho-Corasick之一,我看到很多 Python 實施(雖然不能說什么是最好的)。 隨便找了一個

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM