Leetcode 516. Longest Palindromic Subsequence
题目链接: Longest Palindromic Subsequence
难度:Medium
题目大意:
求字符串的最长回文子序列的长度,子序列是原字符串删除一些字符得到的。
思路:
动态规划。
代码
class Solution {
public int longestPalindromeSubseq(String s) {
int n=s.length();
int[][] dp=new int[n][n];
//dp[l][r]表示输入s[l,r]时应该返回的答案
int max=0;
for(int l=n-1;l>=0;l--){
for(int r=l;r<n;r++){
if(l==r){
dp[l][r]=1;
continue;
}
if(s.charAt(l)==s.charAt(r)){
if(r-l==1){
dp[l][r]=2;
}
else{
dp[l][r]=dp[l+1][r-1]+2;
}
}
else{
dp[l][r]=Math.max(dp[l+1][r],dp[l][r-1]);
}
}
}
return dp[0][n-1];
}
}