2
我想找到一個字符串上最頻繁的子字符串(一定長度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的頻率(以報告)?
感謝您的幫助。但是,在您向我發送的代碼之前輸入以下代碼後,我沒有成功:line ='KLHLHLHKPLHLHLPHHKLH' L = 4 tups = {} 我在做什麼錯? (第一個打印(tups)爲空) –
http://ideone.com/EyBCC8 –
好的,謝謝,現在腳本在'for x'部分顯示錯誤(無效語法)。它可能與使用的Python版本有關嗎? (2.7.3) –