【发布时间】:2017-05-10 13:49:01
【问题描述】:
从目标字符串的列表中查找字符串出现次数的最佳方法是什么?具体来说,我有一个清单:
string_list = [
"foo",
"bar",
"baz"
]
target_string = "foo bar baz bar"
# Trying to write this function!
count = occurrence_counter(target_string) # should return 4
我想优化以最小化速度和内存使用量,如果这会有所不同的话。在大小方面,我预计string_list 最终可能包含数百个子字符串。
【问题讨论】:
-
使用后缀尝试。使用您的模式创建一个 trie,然后在探索树的出现时迭代文本。想象一下,您的模式之一是
aaa,而您的文本是aaaaa。解决方案应该是 3,您可以使用后缀尝试来实现。 -
你的字符串总是用空格分隔的吗?
-
另外,
["foo", "bar", "foobar"]和"foobar"的结果应该是什么? -
感谢您提出的好问题 - 我今天的用例是一个以空格分隔的单词列表,其中需要匹配整个单词(即,没有类似 'foobar' 的问题)