题解 | #最长回文子序列#

最长回文子序列

http://www.nowcoder.com/practice/c7fc893654b44324b6763dea095ceaaf

这个题可以参考最长公共子序列。最长回文子序列可以通过构造两个相反的字符串求最长子序列的方式求出。采用动态规划,时间复杂度O(n^2)空间复杂度O(n^2)。进一步的,还能求出这个最长的子序列具体的结果。

public class Solution {
    public int longestPalindromeSubSeq (String s) {
        // write code here
        int dp[][] = new int[s.length()+1][s.length()+1];
        String s1 = new StringBuilder(s).reverse().toString();
        for(int i=1;i<=s.length();++i){
            for(int j=1;j<=s.length();++j){
                if(s.charAt(i-1)==s1.charAt(j-1)){
                    dp[i][j] = dp[i-1][j-1]+1;
                }
                else dp[i][j] = Math.max(dp[i-1][j],dp[i][j-1]);
            }
        }
        return dp[s.length()][s.length()];
    }
}
全部评论
太秀了
点赞 回复 分享
发布于 2022-04-21 10:27

相关推荐

已注销:bro不如吃顿疯狂星期四
点赞 评论 收藏
分享
迷茫的大四🐶:都收获五个了,兄弟那还说啥,不用改了,去玩吧
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

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