Longest Palindromic Subsequence
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
Input:
“cbbd”
Output:
2
One possible longest palindromic subsequence is “bb”.
Solution
凡是求两个端点最优解的题都可以用二维dp数组
class Solution:
def longestPalindromeSubseq(self, s: str) -> int:
n = len(s)
dp = [[1]*n for _ in range(n)]
for j in range(n):
for i in range(j-1, -1, -1):
if s[i]==s[j]:
dp[i][j] = dp[i+1][j-1] + 2 if i+1 <= j-1 else 2
else:
dp[i][j] = max(dp[i+1][j], dp[i][j-1])
return dp[0][n-1]