Случай 2 алгоритма Манахера - PullRequest
0 голосов
/ 09 апреля 2020

Случай 2 алгоритма Manacher сравнивает [R - pRight] - называемый distToEdge - с palLen [pLeft]. Когда distToEdge меньше, чем palLen [pLeft], мы go с distToEdge и назначаем это для palLen [pRight]. Разве мы не должны сравнивать palLen [pLeft] / 2 вместо distToEdge? По сути, distToEdge смотрит только на половину потенциального палиндрома с центром в pRight. Таким образом, кажется логичным искать только половину палиндрома, отраженного в центре с левой стороны. Заранее спасибо!

R: Индекс для правой границы текущего самого длинного палиндрома

L: Индекс для левой границы текущего длинного палиндрома

C: Центр текущего самого длинного палиндрома

palLen: массив, в котором хранятся длины палиндромов по заданным индексам

pRight: палиндром, индексированный по pRight, который зеркально отражен по C из индекса pLeft - длина палиндрома по индексу pLeft уже известно. Длина палиндрома, индексированного по pRight, определяется с помощью palLen [pLeft] и [R - pRight] для целей этого вопроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...