假设我有一个序列x1,x2,x3 ...... xn,我想找到最长的连续子序列xi,xi + 1,xi + 2 ...... xi + k,其反向也是给定序列的子序列。 如果有多个这样的子序列,那么我也必须找到最小的i。
例如: - 考虑序列:
abcdefgedcg 这里i = 3且k = 2
aabcdddd 这里i = 5,k = 3
我试着查看原始最长的常见子序列问题,但是这用于比较两个序列以找到最长的公共子序列....但这里只有一个序列,我们必须从中找到子序列。请告诉我解决此问题的最佳方法是什么,以找到最佳解决方案。
答案 0 :(得分:5)
实际上,这是应用于序列及其反向的最长的常见子字符串问题:http://en.wikipedia.org/wiki/Longest_common_substring_problem
这与最长的常见子序列不同:http://en.wikipedia.org/wiki/Subsequence#Substring_vs._subsequence
答案 1 :(得分:2)
将最长的公共子字符串应用于字符串及其反向。
LCS ("abcdefgedcg", "gcdegfedcba") = "cde"
编辑:不是potatoswatter指出的后续序列,而不是子序列。