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)