Генерация поворотов каждого слова и размещение каждого поворота в дереве суффиксов с указанием «индекса поворота».
Например, чтобы поставить строку "привет", введите
hello, 0
elloh, 1
llohe, 2
lohel, 3
ohell, 4
Кроме того, вы ставите «герой» как
hero, 0
eroh, 1
rohe, 2
oher, 3
Кроме того, вы ставите "ОХЭ" (не спрашивайте меня, что ОХЭ)
ohe, 0
heo, 1
eoh, 2
Тогда, если вам нужно искать шаблон
"он * о", вам нужно вращать его, пока не получите строку с префиксом:
"Оха *"
В дереве суффиксов вы найдете кандидатов: (ohell, 4), (oher, 3), (ohe, 0).
Затем вы восстанавливаете их исходные версии (не поворачивая их) и выбираете правильные версии - «привет» и «герой».