У Азизхана есть строчка S. Его интересует сколько есть подстрок четной

У Азизхана есть строчка S. Его интересует сколько есть подстрок четной длины у строчки S, которые являются палиндромами. Однообразные подстроки начинающие с разных позиций числятся различными.
Формат входных данных
Единственная строчка входного файла содержит одну строку S состоящее из строчных букв британского алфавита (1 lt;= длина S lt;= 100000).
Формат выходных данных
Выведите ответ к задачке.
Помагите плиз

Задать свой вопрос
1 ответ
Бесхитростный метод: используя два вложенных цикла, проверить все подстроки, являются ли они палиндромами. Таковой метод будет работать O(S^2), что при ограничении S lt;= 10^5 потребует приблизительно 10^10 / 2 сопоставлений, что довольно длинно.

Оптимизация: в центре у палиндрома четной длины всегда пара схожих знаков. Их можно отыскать, а затем наращивать длину до тех пор, пока это возможно. Плюс этого наблюдения в том, что если пара попадется не в центре, то наибольшая длина подстроки-палиндрома с центром в этой паре, будет ограничена сверху. Но в худшем случае (все символы одинаковы) всё равно придется произвести большое число сопоставлений.

Но задачку можно решить и за линейное время. Например, существует метод Манакера, основанный на том, что можно использовать информацию, что часть строки является палиндромом. А конкретно, если в длинноватую-длинную строку-палиндром заходит другая подстрока-палиндром, то можно не начинать проверку поновой, а использовать теснее имеющуюся информацию.

Пример 1: "длинноватая" подстрока-палиндром:
cbbaabbaabbc
в которой знаменита подстрока-палиндром. Тогда в строке есть симметричная подстрока-палиндром:
cbbaabbaabbc
Пример 2: "длинная" подстрока палиндром:
bbaabbaabbaa
Зная, что в ней есть подстрока-палиндром
bbaabbaabbaa,
можно явные сопоставленья для подстроки с центром в
bbaabbaabbaa
начинать теснее с 
bbaabbaabbaa

Если не охото писать без помощи других, метод Манакера просто находится.
, оставишь ответ?
Имя:*
E-Mail:


Добро пожаловать!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запить!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт