1function kmpSearch(text, pattern):
2 lps = array(pattern.length, 0)
3 i = 1; len = 0
4 while i < pattern.length:
5 compare pattern[i] with pattern[len]
6 if equal: len++; lps[i] = len; i++
7 else if len > 0: len = lps[len - 1]
8 else: lps[i] = 0; i++
9 preprocessing complete
10 i = 0; j = 0
11 while i < text.length:
12 compare text[i] with pattern[j]
13 if equal: i++; j++
14 if j == pattern.length: record i - j
15 after match: j = lps[j - 1]
16 else if mismatch and j > 0:
17 j = lps[j - 1]
18 else: i++
19 return all match indexes
No pseudocode line selected.