public class Solution {
int max=0;
int start=0;
public String longestPalindrome(String s) {
if(s.length()<2){
return s;
}
for(int i=0;i<s.length()-1;i++){
findMax(s,i,i);
findMax(s,i,i+1);
}
return s.substring(start,start+max);
}
public void findMax(String s,int i,int j){
while(i>=0&&j<s.length()&&s.charAt(i)==s.charAt(j)){
i--;
j++;
}
if(j-i-1>max){
max=j-i-1;
start=i+1;
}
}
}
public class Solution {
int max=0;
int start=0;
public String longestPalindrome(String s) {
if(s.length()<2){
return s;
}
int len=s.length();
boolean dp[][]= new boolean[len][len];
for(int i=0;i<s.length();i++){
dp[i][i]=true;
for(int j=0;j<i;j++){
dp[i][j]=((i-j<2||dp[i-1][j+1])&&s.charAt(i)==s.charAt(j));
if(dp[i][j]&&max<i-j+1){
max=i-j+1;
start=j;
}
}
}
return s.substring(start,start+max);
}
}
使用两种解法,第一种解法是考虑两种回文情况,第二种是使用动态规划思想