【发布时间】:2015-05-05 09:52:43
【问题描述】:
问题是这样的--
对于作为输入给出的每个字符串,您需要告诉它的回文子序列的数量(不一定是不同的)。请注意,空字符串不是回文。 例如,“aab”的回文子序列是:
“a”、“a”、“b”、“aa”,方法返回4。
我想到了寻找最长回文子序列的动态编程解决方案,因此试图从中汲取灵感。无法真正得到解决方案。可能甚至不需要动态编程。请提出建议。
还有一个问题。当去掉“不一定要不同”的条件后,我们还能在不实际生成所有回文子序列的情况下进行计数吗?
【问题讨论】:
-
aba的答案是什么?你真的是指子序列还是子字符串? -
我只指子序列。 "aba" 的答案是 'a', 'b', 'a', 'aa','aba' 即 5。如您所见,'aa' 实际上是一个子序列而不是子字符串。
-
geeksforgeeks.org/… 这可以帮助您查找 str1 是否是 str2 的子序列,然后运行它来检查字符串的每个部分
-
@therealprashant 很抱歉,但这有什么帮助?我们必须计算回文子序列的数量,以及您建议的方法的空间和时间复杂度是多少?
-
不要只查找最长的序列,而是将所有找到的回文和每个回文的子序列都保存在内存中
标签: algorithm data-structures dynamic-programming