擅长:python、mysql、java
<p>你应该考虑使用列表理解。在</p>
<pre><code>def pattern_count(text, pattern):
matches = ([x for x in range(len(text) - len(pattern) + 1) if pattern in text[x:len(pattern) + x]])
return len(matches)
def frequent_words(text, k):
counts = [pattern_count(text, text[x:x + k]) for x in range(len(text) - k)]
return set([text[x:x + k] for x in range(len(text) - k) if counts[x] == max(counts)])
</code></pre>
<p><strong>模式计数</strong>将解析模式的字符串。我们拼接文本字符数组,以便检查该部分是否包含模式。这允许我们在结果中包含重叠的条目。例如</p>
<p><em>模式计数(ABA,ABA)</em>->;结果为2,而不是1。在</p>
^{pr2}$
<p><strong>frequent_words</strong>使用相同的文本,但不是模式,我们给它一个int,表示模式应该有多长。一旦我们得到满足character<strong>k</strong>要求的每个模式的出现次数列表,我们就通过获取出现频率最高的条目来过滤它。最后,为了删除任何重复项,我们将列表转换为一个哈希集,该哈希集固有地防止重复条目,从而返回一个只有唯一值的集合。在</p>
<p>测试:</p>
<pre><code>print(frequent_words("BABBASDCABCBABDDASDBBCASDBAB", 3))
[0] {'BAB', 'ASD'}
</code></pre>
<p>希望这对你有用。在</p>