Leetcode 516. Longest Palindromic Subsequence
解法:动态规划法
class Solution {
public:
int longestPalindromeSubseq(string s) {
int n = s.length();
if (n==0)
{
return 0;
}
int longest_num = 1;
vector<vector<int>> dp(n, vector<int>(n, 0));
for (int i = 0; i < n;i++)
{
dp[i][i] = 1;
}
for (int len = 1; len < n;len++)
{
for (int i = 0; i + len < n;i++)
{
int end = i + len;
if (s[i] == s[end])
{
dp[i][end] = dp[i + 1][end - 1] + 2;
if (dp[i][end] > longest_num)
{
longest_num = dp[i][end];
}
}
else
{
dp[i][end] = max(dp[i + 1][end], dp[i][end - 1]);
}
}
}
return longest_num;
}
};