Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. def kmp(s,t):
  2.     index = -1
  3.     f = prefix(s)
  4.     k = 0
  5.     for i in xrange(len(t)):
  6.         while k > 0 and s[k] <> t[i]:
  7.             k = f[k-1]
  8.         if s[k] == t[i]:
  9.             k = k + 1
  10.         if k == len(s):
  11.             index = i - len(s) + 1
  12.             break
  13.     return index