擅长:python、mysql、java
<p>您可能应该看看<code>difflib.get_close_matches</code>函数。它的作用几乎是一样的。如果您真的想实现它,那么只需构建一个相同长度的所有子序列的列表并按匹配数对它们进行排序,就更容易实现了。你知道吗</p>
<pre><code>def subsequence(a, b, n):
sb = [(i, b[i:i+len(a)]) for i in xrange(len(b) - len(a) + 1)]
def count_matches(s):
return sum(int(x == y) for (x, y) in zip(a, s[1]))
sb.sort(key=count_matches, reverse=True)
best = sb[0]
e = len(a) - count_matches(best)
i = best[0]
w = best[1]
print 'A best match with %d errors was found starting at position %d' % (e, i)
</code></pre>