Случай 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] для целей этого вопроса.