O(|S|) में एक स्ट्रिंग में एक सबस्ट्रिंग खोजने के लिए KMP(नथ-मॉरिस-प्रैट) एल्गोरिदम को लागू करने के लिए Z और फ़ंक्शन उपसर्ग दोनों का उपयोग किया जा सकता है। इस एल्गोरिथ्म का सार इस प्रकार है: हम उस स्ट्रिंग को विशेषता देते हैं जिसे हम उस स्ट्रिंग को खोजना चाहते हैं जिसमें हम खोज रहे हैं। इन पंक्तियों के बीच एक विभाजक वर्ण रखना अत्यधिक वांछनीय है, अर्थात एक ऐसा वर्ण जो किसी भी पंक्ति में नहीं होता है (आमतौर पर #)।