擅长:python、mysql、java
<p>您可以使用<a href="http://docs.python.org/2/library/difflib.html" rel="nofollow">^{<cd1>}</a>模块:</p>
<pre><code>import difflib
def have_common_triplet(a, b):
matcher = difflib.SequenceMatcher(None, a, b)
return max(size for _,_,size in matcher.get_matching_blocks()) >= 3
</code></pre>
<p>结果:</p>
^{pr2}$
<p>但是请注意,<code>SequenceMatcher</code>比找到第一个公共的三元组要多得多,因此它可能比一个幼稚的方法花费更多的时间。更简单的解决方案是:</p>
<pre><code>def have_common_group(a, b, size=3):
first_indeces = range(len(a) - len(a) % size)
second_indeces = range(len(b) - len(b) % size)
seqs = {b[i:i+size] for i in second_indeces}
return any(a[i:i+size] in seqs for i in first_indeces)
</code></pre>
<p>它的性能应该更好,尤其是当匹配在字符串的开头时。在</p>