This document discusses and defines four common algorithms for string matching: 1. The naive algorithm compares characters one by one with a time complexity of O(MN). 2. The Knuth-Morris-Pratt (KMP) algorithm uses pattern preprocessing to skip previously checked characters, achieving linear time complexity of O(N+M). 3. The Boyer-Moore (BM) algorithm matches strings from right to left and uses pattern preprocessing tables to skip more characters than KMP, with sublinear worst-case time complexity of O(N/M). 4. The Rabin-Karp (RK) algorithm uses hashing techniques to find matches in text substrings, with time complexity of