【算法】lc516最长回文子序列 区间dp
给你一个字符串 s ,找出其中最长的回文子序列,并返回该序列的长度。 输入:s = "bbbab" 输出:4 解释:一个可能的最长回文子序列为 "bbbb" 。
经典区间dp题目
思路:集合角度解决dp问题
ac code
class Solution { public int longestPalindromeSubseq(String s) { int n = s.length(); int[][] f = new int[n][n]; for(int len = 1; len <= n; len ++){ for(int l = 0; l + len - 1 < n; l ++){ int r = l + len - 1; if(len == 1){ f[l][r] = 1; }else{ if(s.charAt(l) == s.charAt(r))f[l][r] = f[l + 1][r - 1] + 2; f[l][r] = Math.max(f[l][r],Math.max(f[l + 1][r],f[l][r - 1 ])); } } } return f[0][n - 1]; } }