Алгоритм Бойера-Мура-Хорспула поиска образ в строке я правильно понял и разобрал пошагово?
Строка - даданные
Образ для поиска - данные
Таблица смещений (от последнего символа образа)
е = 6
ы = 1
н = 2
a = 4
д = 5
* = 6 (если символа нет в образе - длина образа)
даданные
_____ ^
_____ |
данные
"е" и "н" не совпадают
"н" в таблице смещено от конца образа на две позиции
смещаем образ вдоль строки вправо на 2
даданные
_______ ^
_______ |
__данные
Если проверяемый элемент в образе и строке совпал - двигаем влево по образу и строке и смотрим дальше по этой схеме.
Если бы не обнаружили наши "данные" - перешли бы к "а" и сдвинулись по строке на 4 позиции вправо.
Если нашли символ которого нет в образе - передвинулись бы по строке на всю длину образа...
Потому что если встретили "данное", а не "данные", то на следующие 6 символов в строке совпадений с образом не будет.
данноетаданные
_____^ ^ ^
данные | |
_____данные |
_____________ |
________данные
Зачем вот это вот все?)