如何找到最长的连续子序列,其反向也是子序列

时间:2010-03-19 04:45:50

标签: c# c algorithm sequence

假设我有一个序列x1,x2,x3 ...... xn,我想找到最长的连续子序列xi,xi + 1,xi + 2 ...... xi + k,其反向也是给定序列的子序列。 如果有多个这样的子序列,那么我也必须找到最小的i。

例如: - 考虑序列:

abcdefgedcg 这里i = 3且k = 2

aabcdddd  这里i = 5,k = 3

我试着查看原始最长的常见子序列问题,但是这用于比较两个序列以找到最长的公共子序列....但这里只有一个序列,我们必须从中找到子序列。请告诉我解决此问题的最佳方法是什么,以找到最佳解决方案。

2 个答案:

答案 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指出的后续序列,而不是子序列。