擅长:python、mysql、java
<p>应该将要匹配的完整字符串与要匹配的前缀分开存储。对于您的前缀,进一步将它们划分为长度相等的前缀集(即一组长度为1的前缀,一组长度为2的前缀,等等)。在</p>
<p>即</p>
<pre><code>fullstrings = set(["BREAKFAST", "LUNCH", "DINNER", ...])
prefixes_by_length = {} # dict of length -> prefix string
...
prefixes_by_length[4] = set(["CORN", "DESK", ...])
prefixes_by_length[5] = set(["BREAD", "TABLE", ...])
</code></pre>
<p>完整字符串匹配很简单-只需检查<code>word in fullstrings</code>。在</p>
<p>对于前缀,将分别检查每个长度,从长度1到要匹配的最大前缀长度。对于每个长度<code>n</code>,请检查<code>word[:n] in prefixes_by_length[n]</code>。在</p>
<p>如果你有很多前缀的话,这比每次循环遍历所有前缀要有效得多。在</p>
^{pr2}$