最长回文子序列
https://www.cnblogs.com/mini-coconut/p/9074315.html
class Solution {
public String longestPalindrome(String s) {
if(s=="" || s==null || s.length()==1)return s;
char[] ch=s.toCharArray();
int n=s.length();
int[][] dp=new int[n][n];
for(int i=0;i<n;i++) {
for(int j=0;j<n;j++) {
if(i==j) {
dp[i][j]=1;
}
if(j-i==1 && ch[i]==ch[j]){
dp[i][j]=1;
}
}
}
for(int l=3;l<=n;l++) {
for(int i=0;i+l-1<n;i++) {
int end=i+l-1;
if(ch[i]==ch[end]) {
dp[i][end]=dp[i+1][end-1];
}
else {
dp[i][end]=0;
}
}
}
int max=0,start=0,end=0;
for(int i=0;i<n;i++) {
for(int j=i;j<n;j++) {
if(max<j-i && dp[i][j]==1) {
max=j-i;
start=i;
end=j;
}
}
}
if(end>=(n-1))return s.substring(start);
return s.substring(start,end+1);
}
}