Existe um algoritmo com o nome do algoritmo de Manacher, que é realmente rápido, um algoritmo de tempo linear.
Veja a referência da Wikipedia
Pós-escrito: Se você realmente conhece o algoritmo Z , verá que eles são parecidos.
Editar
Entendi mal o significado do OP (mas não quero excluir as informações de procedimento. É um pouco útil). Ele significa a subsequência palíndrica mais longa de uma string, portanto a programação dinâmica parece boa:
onde denota o comprimento da maior subsequência palíndrica de , e é o suporte de Iverson. Eu acho que é como 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]