题解 |动态规划解最长回文子序列

最长回文子序列

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

1.想想与回文 子串 有什么区别(子串与子序列)
2.初始条件
3.循环遍历从后开始。
class Solution {
public:
    int longestPalindromeSubSeq(string s) {
        int n = s.size();

        //dp[i][j],从下标 i 到下标 j 的子串中,回文子序列的最大长度
        vector<vector<int>> dp(n, vector<int>(n));
        for(int i = 0; i < n; i++)
            dp[i][i] = 1;

        //从后往前遍历,子问题以被计算
        for(int i = n-1; i >= 0; i--){
            for(int j = i+1; j < n; j++){
                if(s[i] == s[j])
                   dp[i][j] = dp[i+1][j-1]+2;
                else
                   dp[i][j] = max(dp[i+1][j], dp[i][j-1]);
            }
        }
        return dp[0][n-1];
    }
};
全部评论

相关推荐

粗心的雪碧不放弃:纯学历问题,我这几个月也是一直优化自己的简历,后来发现优化到我自己都觉得牛逼的时候,发现面试数量也没有提升,真就纯学历问题
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
11-26 15:46
已编辑
字节国际 电商后端 24k-35k
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务