擅长:python、mysql、java
<p>您可以建立一个索引,将单词映射到短语,并执行以下操作:</p>
<pre>
let matched = set of all phrases
for each word in the searched phrase
let wordMatch = all phrases containing the current word
let matched = intersection of matched and wordMatch
</pre>
<p>在此之后,<code>matched</code>将包含与目标短语中所有单词匹配的所有短语。通过将<code>matched</code>初始化为只包含<code>words[0]</code>的所有短语集,然后只迭代<code>words[1..words.length]</code>,可以很好地优化它。过滤短到与目标短语不匹配的短语也可以提高性能。在</p>
<p>除非我弄错了,否则一个简单实现的最坏情况复杂度(当搜索短语匹配所有短语时),其中<code>O(n·m)</code>是搜索短语中的单词数,<code>m</code>是短语的数量。在</p>