题目: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:
4One possible longest palindromic subsequence is "bbbb".
Example 2:
Input:
"cbbd"Output:
2One possible longest palindromic subsequence is "bb".
题意解读:给定一个字符串,寻找最长的回文子串。注意这里的回文串可以不连续
//dp[i][j] 表示从字符串i-j中回文串的最大长度,这里不要求回文串连续
// 如果s.charAt[i] == s.charAt[j] dp[i][j] = dp[i+1][j-1]
// 如果s.charAt[i] != s.charAt[j] dp[i][j] = max(dp[i+1][j],dp[i][j-1])
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()-1; 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];
}
}