Knuth-Morris-Pratt Algorithm

                           ¡õ never backup
    a b c x y z a b c d a b c d a b x y z
                a b c d a b x y
                   ¡ô      ¡ô
                Next[j]     j

KMPsearch i = 1; j = 1; a b c x y z repeat x y z next[1] = 0 if j = 0 or a[i] = p[j] then a b c x y z i = i + 1; j = j + 1; a x y next[2] = 1 else a b c x y z j = next[j]; a b x y next[3] = 1 until j > M or i > N a a c x y z ¡õ ¡õ a a x y next[3] = 2 i - M Not Found

.How to compute next[j]?


InitNext i = 1; j = 0; next[1] = 0; repeat if j = 0 or p[i] = p[j] then i = i + 1; j = j + 1; next[i] = j; else j = next[j]; until i > M