擅长:python、mysql、java
<p>你的例子不一致。例如,<code>olo</code>不重复,就像<code>Hello, Molly</code>中的l,<code>`trololololo</code>中的l;实例之间有一个<code>l</code>。<code>trololololo</code>中的顺序重复是<code>lolo</code>,<code>lo</code>,<code>olol</code>,和{<cd9>}。你在问一个“贪婪”算法吗?所以,给定<code>trololololo</code>,它会返回<code>olol</code>?在</p>
<p>无论如何,这里有一些代码。在</p>
<pre><code>from collections import Counter
def find_repetition(p):
""" Returns a lookup dictionary for repetitions. """
lookup = Counter()
while len(p) != 0:
for i in xrange(len(p)):
lookup[p[0:i]] += 1
p = p[1:]
return lookup
def repeats(p):
a = find_repetition(p)
rs = [i for i in a if a[i] > 1][1:]
return [r for r in rs if r*2 in p]
</code></pre>
<p>如果你想让它像我描述的那样“贪婪”,你必须添加另一个函数,当它找到匹配项时,它会从repeats和chomps中获取结果。在</p>
<p>目前,结果如下:</p>
^{pr2}$
<p><em>警告</em></p>
<p><code>find_repetition</code>不是很快,因为它基本上生成字符串的所有长度组合并将它们放入Counter对象。在</p>