На алгоритме KMP (Кнут-Морриса-Пратта)
NoSuchKey
рекомендация
отwww.cnblogs.com/Sansetto/p/11431446.html
рекомендация
ранжирование