Спасибо, интересно.
Подробно не изучал, но кажется мой алгоритм работает похожим образом. Но есть важное отличие - он работает не со входной строкой целиком, а с потоком символов. Т.е. заранее длина строки неизвестна, в каждый момент обрабатывается очередной поступивший символ, и соответственно может быть выдан результат.
Кроме того мой алгоритм сможет после некоторой модификации искать структуры типа "
1q
2q
3qdfsdf
1h
2b
3dsfjs", а не только подстроки.