python kmp算法簡單實現

def getnext(a,next):
    al = len(a)
    next[0] = -1
    k = -1
    j = 0
    while j < al-1:
        if k == -1 or a[j] == a[k]:
            j += 1
            k += 1
            next[j] = k
        else:
            k = next[k]

def KmpSearch(a,b):
    i = j = 0
    al = len(a)
    bl = len(b)
    while i < al and j < bl:
        if j == -1 or a[i] == b[j]:
            i += 1
            j += 1
        else:
            j = next[j]
    if j == bl:
        return i-j
    else:
        return -1

a = 'ABABCABDABBGAFDSBVSABDABB'
b = 'ABDABB'
next = [0]*len(b)
getnext(b,next)
t = KmpSearch(a,b)
print(next)
print(t)



發佈了43 篇原創文章 · 獲贊 26 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章