Knuth Morris Pratt (KMP) เป็นอัลกอริทึมที่ตรวจสอบอักขระจากซ้ายไปขวา เมื่อรูปแบบมีรูปแบบย่อยปรากฏมากกว่าหนึ่งรูปแบบในรูปแบบย่อย จะใช้คุณสมบัตินั้นเพื่อปรับปรุงความซับซ้อนของเวลา รวมถึงในกรณีที่เลวร้ายที่สุด ความซับซ้อนของเวลาของ KMP คือ O(n) อินพุตและเอาต์พุต Input: Main String: “AAAABAAAAABBB