题意
解法
首先我提供一个暴力的DP解法。dp[i][j]表示s[i,j]是是不是回文。然后转移取决于dp[i+1][j-1].
class Solution {
public String longestPalindrome(String s) {
boolean [][]dp=new boolean[2000][2000];
String ans="";
for(int len=1;len<=s.length();len++){
for(int i=0;i<s.length();i++){
int end=i+len-1;
try{
dp[i][end]=(len==1||len==2||dp[i+1][end-1])&&s.charAt(i)==s.charAt(end);
if(len>ans.length()&&dp[i][end]){
ans=s.substring(i,end+1);
}
}catch (Exception e){
}
}
}
return ans;
}
}
这里我用了try catch 来保证下标异常。稍后我再补一个马拉车的写法