解法一:中心扩散
public String longestPalindrome(String s) {
int n = s.length();
if(n == 1){
return s;
}
String res;
for(int i = n;i > 0;i--){
for(int j = 0;j <= n - i;j++){
res = s.substring(j,i + j);
StringBuilder str = new StringBuilder();
str.append(res);
if(str.reverse().toString().equals(res)){
return res;
}
}
}
return null;
int n = s.length();
if (n == 1) {
return s;
}
if(n == 2){
if(s.charAt(0) == s.charAt(1)){
return s;
}else {
return s.substring(0,1);
}
}
int len = 0;
int left = 0;
int right = 0;
String res = "";
for (int i = 1; i < n ; i++) {
left = i;
right = i;
String s1 = "",s2 = "" ;
s1 = isPalindrome(s,left,right);
if(s.charAt(left-1) == s.charAt(right)){
s2 = isPalindrome(s,left-1,right);
}
if(len < s1.length()){
len = s1.length();
res = s1;
}
if(len < s2.length()){
len = s2.length();
res = s2;
}
}
return res;
}
public static String isPalindrome(String s,int left,int right){
int n = s.length();
int len = right - left + 1;
String res = s.substring(left,right + 1);
while(left >= 0 && right <= n-1){
if(s.charAt(left) != s.charAt(right))
break;
if((right - left + 1) > len){
len = right - left + 1;
res = s.substring(left,right + 1);
}
left--;
right++;
}
return res;
}
4/17/26About 2 min