$./kmpnext
pattern:
2 step/s
# algorithm
1ComputeKMPNext(p) {m = |p|}
2begin
3 jKMPnext[1]0
4 for i1 to m do
5 while j > 0 and p[i]p[j] do jKMPnext[j]
6 jj + 1
7 if i = m or p[i + 1]p[j] then KMPnext[i + 1]j
8 else KMPnext[i + 1]KMPnext[j]
9 od
10end
# pattern (1-indexed)
no data
# variables
i
j
m
10
p[i]
p[j]
p[i+1]
# KMPNext array (1-indexed)
no data
# current action
enter a pattern and click "run" to begin...
# step history
stepip[i]j_startj_endbranchkmpnextaction