Longest Palindromic Subsequence

update Aug 7,2017 0:23

LeetCodearrow-up-right

Given a string s, find the longest palindromic subsequence's length in s. You may assume that the maximum length of s is 1000.

Example 1:

Input:

"bbbab"
Output:
4
One possible longest palindromic subsequence is "bbbb".

Example 2:

Input:

"cbbd"
Output:
2
One possible longest palindromic subsequence is "bb".

Basic Idea:

这里有几种不同的思路,由易到难。 思路1:dfs brute force 从s的两端开始检查,利用如下转换方程,但是因为这种方法会计算大量重复内容,最终得到TLE。

思路2:dfs with memoization 仔细观察了之后我们发现可以用memoization消除重复计算,将时间复杂度从O(2^n)优化到O(n^2)。

思路3:bottom-up dp

思路4:转化为求 s 和 s[::-1] 的 LCS 的dp问题

Last updated