题目链接:https://leetcode-cn.com/problems/longest-palindromic-subsequence/
难度:中等

描述:
给你一个字符串 s ,找出其中最长的回文子序列,并返回该序列的长度。
子序列定义为:不改变剩余字符顺序的情况下,删除某些字符或者不删除任何字符形成的一个序列。

题解

  1. class Solution:
  2. def longestPalindromeSubseq(self, s: str) -> int:
  3. n = len(s)
  4. # r[i][j]代表s[i:j+1]的最长回文序列长度
  5. r = [[0]*n for _ in range(n)]
  6. for i in range(n-1, -1, -1):
  7. r[i][i] = 1
  8. for j in range(i+1, n):
  9. if s[i] == s[j]:
  10. r[i][j] = r[i+1][j-1] + 2
  11. else:
  12. r[i][j] = max(r[i+1][j], r[i][j-1])
  13. return r[0][-1]