擅长:python、mysql、java
<p>总的想法应该行得通。只是,如果在查找时没有在字典中找到键,则会出现错误-因此在查找之前,必须先检查该键是否存在,如果不存在,则进行初始化:</p>
<pre><code>def findsubs(str):
d={}
for i in range(len(str)-1):
for j in range(i+2, len(str)-2):
if str[i:j] not in d:
d[str[i:j]] = 0
if d[str[i:j]]>1:
return str[i:j]
else:
d[str[i:j]] = d[str[i:j]] +1
return 0
</code></pre>
<p>注意,您可以做<code>if str[i:j] not in d: d[str[i:j]] = 0</code>,而不是<code>d.setdefault(str[i:j], 0)</code>,如果键不在dict中,则将值设置为<code>0</code>,如果不在dict中,则保持不变。在</p>
<p>不过,还有一些评论:</p>
<ul>
<li>如果找不到任何内容,应该返回<code>None</code>,而不是{<cd3>}。在</li>
<li>不应该调用变量<code>str</code>,因为这是一个内置函数。在</li>
<li>您希望迭代<code>j</code>直到字符串的结尾。在</li>
<li>如前所述,它只返回一个子字符串,如果它被找到了3次。实际上,您可以使用以前找到的一组子字符串重新编写它:</li>
</ul>
<p>所以:</p>
^{pr2}$