У Азизхана есть строчка 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
Если не охото писать без помощи других, метод Манакера просто находится.
Оптимизация: в центре у палиндрома четной длины всегда пара схожих знаков. Их можно отыскать, а затем наращивать длину до тех пор, пока это возможно. Плюс этого наблюдения в том, что если пара попадется не в центре, то наибольшая длина подстроки-палиндрома с центром в этой паре, будет ограничена сверху. Но в худшем случае (все символы одинаковы) всё равно придется произвести большое число сопоставлений.
Но задачку можно решить и за линейное время. Например, существует метод Манакера, основанный на том, что можно использовать информацию, что часть строки является палиндромом. А конкретно, если в длинноватую-длинную строку-палиндром заходит другая подстрока-палиндром, то можно не начинать проверку поновой, а использовать теснее имеющуюся информацию.
Пример 1: "длинноватая" подстрока-палиндром:
cbbaabbaabbc
в которой знаменита подстрока-палиндром. Тогда в строке есть симметричная подстрока-палиндром:
cbbaabbaabbc
Пример 2: "длинная" подстрока палиндром:
bbaabbaabbaa
Зная, что в ней есть подстрока-палиндром
bbaabbaabbaa,
можно явные сопоставленья для подстроки с центром в
bbaabbaabbaa
начинать теснее с
bbaabbaabbaa
Если не охото писать без помощи других, метод Манакера просто находится.
, оставишь ответ?
Похожие вопросы
-
Вопросы ответы
Новое
NEW
Статьи
Информатика
Статьи
Последние вопросы
Игорь 14 лет назад был на 8 лет моложе, чем его
Математика.
Два тела массами m1 и m2 находящие на расстоянии R друг
Физика.
В сосуде 4целых одна пятая литр воды что бы заполнить сосуд
Математика.
Двум малярам Диме И Олегу поручили выкрасить фасад дома они разделили
Разные вопросы.
найти порядковый номер 41Э если в ядре 20 нейтронов
Разные вопросы.
в ряду натуральных чисел 3, 8, 10, 24, … 18 одно
Математика.
Предприятие по производству с/хоз продукции на производство затратило 3527000 руб Валовый
Разные вопросы.
Математика, задано на каникулы. ВАРИАНТ 1004
НОМЕР 1,2,3,4,5,6,7,8.
Математика.
Имеются три конденсатора емкостью С1=1мкФ, С2=2мкФ и С3=3мкФ. Какую наименьшую емкость
Физика.
Из точки м выходят 3 луча MP MN и MK причём
Геометрия.
Облако тегов