KMP演算法的python實現
阿新 • • 發佈:2019-01-25
下面根據以上的介紹,用python實現的KMP演算法(有不對的地方,還望指正)
#!/usr/bin/env python # -*- coding: utf-8 -*- def getOne(substr): length = len(substr) MAX = 0 j = length-1 for index in range(length-1): if substr[:index+1] == substr[j:]: MAX = max(MAX,index+1) j -= 1 return MAX def buildTable(substr): length = len(substr) table = [] for index in range(length): v = getOne(substr[:index+1]) table.append(v) return table def KMP(string,substr): t = buildTable(substr) j = 0 for i in range(len(string)): if j>=len(substr): return i-len(substr) if string[i] == substr[j]: j += 1 continue if j>0: nextp = j-t[j-1] j = nextp return -1