【算法】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];
    }
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
今天 12:11
点赞 评论 收藏
分享
白火同学:能。我当初应届沟通了1200,收简历50,面试10左右吧,加油投吧
投了多少份简历才上岸
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务