Given a string s, find the longest palindromic subsequence's length in s. You may assume that the maximum length of s is 1000.
Example 1:
Input:
"bbbab"Output:
4
One possible longest palindromic subsequence is "bbbb".
动态规划:
public class Solution {
public int longestPalindromeSubseq(String s) {
if(s.length()<=1) return s.length();
char[] arr=s.toCharArray();
int[][] dp=new int[arr.length][arr.length];
for(int k=0;k<arr.length;k++){
for(int i=0;i<arr.length-k;i++){
int j=i+k;
if(i==j) dp[i][j]=1;
else if(i+1==j) dp[i][j]=arr[i]==arr[j]?2:1;
else{
if(arr[i]==arr[j]){
dp[i][j]=Math.max(dp[i+1][j], Math.max(dp[i][j-1], 2+dp[i+1][j-1]));
}else{
dp[i][j]=Math.max(dp[i+1][j], dp[i][j-1]);
}
}
}
}
return dp[0][arr.length-1];
}
}