文字列で最も頻繁に使用される部分文字列 (特定の長さ L) を見つけようとしていますが、(部分文字列の任意の位置で) 特定のしきい値またはエラー T を許可し、明らかに L 自体より長くはありません。しかし、これまでのところ成功したことはありません。どうすればコードを完成させることができますか?
stn='KLHLHLHKPLHLHLPHHKLH'
L = 4 #(lenght of the pattern)
T = 1 #(maximum tolerance or permitted error in any position of the query pattern)
pattcount = {}
for n in range(len(stn)- L+1):
patt = stn[n:n+L]
s_ = stn[i:i+len(patt)]
if LevenshteinDistance(s_, patt) == T:
pattcount[patt] = pattcount[patt] + 1 if pattcount.has_key(patt) else 1
max = 0
max_patt = []
for p,v in pattcount.iteritems():
if v > max:
max_patt = [p]
max = v
elif v == max:
max_patt += [p]
print (" ".join(max_patt))
したがって、たとえば、最も頻度が高いのが KLH である場合、HLH、PLH、KLP、KPH の頻度はどのようにして KLH の頻度を増加させることができるでしょうか (報告されるために)。