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

相关推荐

2025-12-19 21:53
门头沟学院 Java
想做OpenGL:不要一来就把自己定位这么低吧,把大厂当成目标,不断去学技术做项目,最后你至少能学到能找到中小厂的技术水平,你一上来就找这种两千块还要前后端都会的,其实对你用处不会很大,真去了也是打杂
点赞 评论 收藏
分享
迟缓的马里奥求你们别...:我双2,FPGA方向,在成都找工作投了上百家,收到面试的不超过10家,是成都这个地方太有说法了。西南柬埔寨
秋招,不懂就问
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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