| KMP-Example Algorithm This algorithm is a two step process.First we create a auxiliary array lps[] and then use this array for searching the pattern. Preprocessing : We pre-process the pattern and create an auxiliary array lps[] which
is used to skip characters while matching. Here lps[] indicates longest proper prefix which is also suffix.A proper prefix is prefix in which whole string is not
included.For example, prefixes of string **ABC** are **“ ”**,
**“A”**, **“AB”** and **“ABC”**. Proper prefixes are **“ ”**, **“A”** and **“AB”**. Suffixes of the string are **“ ”**, **“C”**, **“BC”** and **“ABC”**. Searching
We keep matching characters **txt[i]** and **pat[j]** and keep incrementing i and j while **pat[j]** and **txt[i]** keep matching.
When we see a mismatch,we know that characters **pat[0..j-1]** match with **txt[i-j+1…i-1]**.We also know that lps[j-1] is count of characters of **pat[0…j-1]** that are both proper prefix and suffix.From this we can conclude that we do not need to match these **lps[j-1]** characters with **txt[i-j…i-1]** because we know that these characters will match anyway.
Implementaion in Java |