【发布时间】:2010-03-19 04:45:50
【问题描述】:
假设我有一个序列x1,x2,x3.....xn,我想找到最长的连续子序列xi,xi+1,xi+2......xi+k,其逆也是给定序列的子序列。 而如果有多个这样的子序列,那么我也必须找到最小的i。
例如:- 考虑序列:
abcdefgedcg 这里 i=3 和 k=2
aabcdddd 这里 i=5, k=3
我尝试查看原始最长公共子序列问题,但这是用于比较两个序列以找到最长公共子序列....但这里只有一个序列,我们必须从中找到子序列。请让我知道解决此问题的最佳方法是什么,以找到最佳解决方案。
【问题讨论】:
-
第一个例子得到 i=2 k=3,第二个例子得到 i=5 k=4。
-
@Potatoswatter:不,你没有。再次阅读问题的陈述。 “k”的定义搞砸了。 k 是子串 减一 的长度,i 是 基于一的 索引。您假设 k 是子字符串的长度,而 i 是与开头的距离,但这不是它们的定义方式。
-
@Eric:那好吧。虽然这行得通,因为他保证为任何非空输入找到一个子字符串,但仍然建议 OP 使用正常的编程约定。