516.Longest Palindromic Subsequence === ###### tags: `Medium`,`String`,`DP` [516. Longest Palindromic Subsequence](https://leetcode.com/problems/longest-palindromic-subsequence/) ### 題目描述 Given a string `s`, find *the longest palindromic **subsequence**'s length in* `s`. A **subsequence** is a sequence that can be derived from another sequence by deleting some or no elements without changing the order of the remaining elements. ### 範例 **Example 1:** ``` Input: s = "bbbab" Output: 4 Explanation: One possible longest palindromic subsequence is "bbbb". ``` **Example 2:** ``` Input: s = "cbbd" Output: 2 Explanation: One possible longest palindromic subsequence is "bb". ``` **Constraints**: * 1 <= `s.length` <= 1000 * `s` consists only of lowercase English letters. ### 解答 #### Javascript ```javascript= function longestPalindromeSubseq(s) { const n = s.length; const dp = new Array(n).fill(0).map(() => new Array(n).fill(0)); for (let i = n - 1; i >= 0; i--) { dp[i][i] = 1; for (let j = i + 1; j < n; j++) { if (s[i] === s[j]) { dp[i][j] = dp[i + 1][j - 1] + 2; } else { dp[i][j] = Math.max(dp[i + 1][j], dp[i][j - 1]); } } } return dp[0][n - 1]; } ``` > [name=Marsgoat][time=Apr 15, 2023] ### Reference [回到題目列表](https://hackmd.io/@Marsgoat/leetcode_every_day)