Wydaję mi się, że lepiej opisane są tutaj algorytmy KMP oraz Rabina-Karpa