# Longest Palindromic Subsequence_516 ###### tags: `leetcode`,`dp`,`medium` **Longest Palindromic Subsequence** >ref: 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. >0. init : count[i][i]=1 , single word is palindromic. >count[i][j] define the max length of palindromic string within substring(i,j) >1. not substring but subsequence, create array store the length of max palindromic length. >2. calculate count[i][j] after count[i+1][j-1],count[i+1][j] and count[i][j-1] >3. timeCom:O(MN) spatialCom:O(MN) ```java= public int longestPalindromeSubseq(String s) { byte[] t=s.getBytes(); int[][] count= new int[t.length][t.length]; for(int i=t.length-1 ; i>=0;i--){ count[i][i]=1; for(int j=i+1;j<t.length;j++){ if(t[i]==t[j]){ count[i][j]=count[i+1][j-1]+2; }else{ count[i][j]=Math.max(count[i][j-1],count[i+1][j]); } } } return count[0][t.length-1]; } ```