Il y a un algorithme nommé d'après l'algorithme de Manacher, qui est vraiment rapide, un algorithme de temps linéaire.
Voir la référence de Wikipedia
Postscript: Si vous êtes vraiment familier avec l' algorithme Z , vous constaterez qu'ils se ressemblent.
Éditer
J'ai juste mal compris la signification du PO (mais je ne veux pas supprimer les informations de procédure. C'est quelque peu utile). Il signifie la plus longue sous-séquence palindrome d'une chaîne, donc la programmation dynamique semble bonne:
où désigne la longueur de la sous-séquence palindrome la plus longue de , et est le support d'Iverson, je pense que c'est comme LCS .
fj,kfk,kfj,k=max(fj,k+1,fj+1,k,2[Sj=Sk]+fj+1,k−1),j<k=1=0,j>k
fj,kSj..k[P]