最常见的回文序列

Mos*_*man 5 string algorithm lcs

是否有任何有效的算法可以计算两个给定字符串的最长公共回文子序列的长度?

例如:

字符串1. afbcdfca

字符串2. bcadfcgyfka

LCPS为5,LCPS串为afcfa.

Ano*_*sse 5

是.

只需将LCS算法用于两个以上的序列.

如果我没有弄错的话

 LCS( afbcdfca, acfdcbfa, bcadfcgyfka, akfygcfdacb) = afcfa
Run Code Online (Sandbox Code Playgroud)

由你来决定字符串#2和#4.

更新:不,这是一个反例:LCS(aba,aba,bab,bab)= ab,ba.LCS不能确保子序列是回文,你可能需要添加这个约束.无论如何,LCS的递推方程是一个很好的起点.

如果你以生成器样式实现LCS,那么它生成长度为n的所有LCS,然后是n-1,n-2等,那么你应该能够相当有效地计算LCS-gen中最长的公共成员(string1, reverse-string1),LCS-gen(string2,reverse-string2).但是,如果有一个高效的LCS-gen,我还没有检查过.