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; } };