擅长:python、mysql、java
<p>既然您提到您正在寻找一个有效的算法,并且假设您提前获得了字典(而不仅仅是作为一个可调用的谓词),那么您可以使用<a href="https://en.wikipedia.org/wiki/Aho%E2%80%93Corasick_string_matching_algorithm" rel="nofollow">Aho–Corasick</a>算法。在</p>
<p>当然,如果输入的文本很短,一个更朴素的算法会更快,以避免字典的“昂贵”预处理。在</p>
<p>另外,python的另一个答案是:这里有一个简单的方法来检查每个子字符串:</p>
<pre><code>def gen_words(txt):
n = len(txt)
for i in range(n):
for j in range(i+1, n+1):
subtxt = txt[i:j]
if is_word(subtxt):
yield subtxt
</code></pre>
<p>要获得独特性,请执行以下操作:</p>
^{pr2}$