string,algorithm,substring,dfa,knuth-morris-pratt

Let us take a look at the following FA for pattern ACACAGA. The abvoe diagrams represent graphical and tabular representations of pattern ACACAGA. Here, number of states in DFA is M + 1 where M is length of the pattern. The main thing to construct DFA is to get the...

string,algorithm,matching,knuth-morris-pratt,rabin-karp

When you want to search for multiple patterns tipically the correct choice is to use Aho-Corasick which is somewhat a generalization of KMP. Now in your case you are only searching for 3 patterns so it may be the case that KMP is not that much slower(at most three times),...

The longest proper suffix that is also a prefix is a prefix of length p[n - 1]. The next one is the longest suffix of this suffix which is also a prefix. It is exactly a prefix of length p[p[n - 1] - 1]. We keep repeating it until we...

algorithm,optimization,knuth-morris-pratt

That looks fine to me, although I don't know how much difference it will make in practice. It's certainly true that in common scenarios, the majority of the loops will be precisely the case where i is 0 and the character at position S[m] ≠ W[0]. I don't think the...