516. Longest Palindromic Subsequence

来源:互联网 发布:ipad网络不稳定 编辑:程序博客网 时间:2024/06/05 03:49

Given a string s, find the longest palindromic subsequence’s length in s. You may assume that the maximum length of s is 1000.

Example 1:
Input:

“bbbab”
Output:
4
One possible longest palindromic subsequence is “bbbb”.
Example 2:
Input:

“cbbd”
Output:
2
One possible longest palindromic subsequence is “bb”.
这道题其实就是动态规划每一步算出从某个字符到某个字符对于最终回文的贡献度。注意初始化dp数组。
代码如下:

class Solution {public:    int longestPalindromeSubseq(string s) {         int dp[s.size()][s.size()];         for(int i=0;i<s.size();i++){             for(int j=0;j<s.size();j++){                 dp[i][j]=0;             }         }         for(int i=s.size()-1;i>=0;i--){//由最终取值来决定循环顺序            dp[i][i]=1;             for(int j=i+1;j<s.size();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][s.size()-1];    }};