516. Longest Palindromic Subsequence
字长回文子序列,动态规划公式是dp[left][right]=dp[left+1][right-1]+2(当s.charAt(left)==s.charAt(right))时,
否则dp[left][right]=Math.max(dp[left+1][right],dp[left][right-1]);
状态转移公式的意义:以left开始,以right结束的字串,其最大的回文子序列。
注意:left需要从大到小。
class Solution {
public int longestPalindromeSubseq(String s) {
int dp[][]=new int[s.length()][s.length()];
for(int i=s.length()-1;i>=0;i--){
dp[i][i]=1;
for(int j=i+1;j<s.length();j++){
if(s.charAt(i)==s.charAt(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][s.length()-1];
}
}