The document discusses several algorithms for pattern matching in strings:
1) Brute-force algorithm compares the pattern to every substring of the text, running in O(nm) time where n and m are the lengths of the text and pattern.
2) Boyer-Moore algorithm uses heuristics like the last occurrence function to skip comparisons, running faster in O(nm+s) time where s is the alphabet size.
3) Knuth-Morris-Pratt algorithm builds a failure function to determine the maximum shift of the pattern after a mismatch, running optimally in O(n+m) time.