暴力查找:
class Solution {
public String longestPalindrome(String s) {
int len;
int maxlen=0;
String palindrome="";
if(s.length()==0)
return s;
for(int i=0;i<s.length();i++)
for(int j=i;j<s.length();j++){
len=j-i;
if(check(s.substring(i,j+1))){
if(maxlen<=len){
maxlen=len;
palindrome=s.substring(i,j+1);
}
}
}
return palindrome;
}
public boolean check(String s){
int l=0;
int r=s.length()-1;
while(l<r){
if(s.charAt(l)==s.charAt(r)){
l++;
r--;
}
else
return false;
}
return true;
}
}
中心查找:
class Solution {
public String longestPalindrome(String s) {
if(s==null||s.length()<1)
return "";
int max_len=0;
int len1,len2;
String palindrome="";
for(int i=0;i<s.length();i++){
len1=isPalindrome(s,i,i);
len2=isPalindrome(s,i,i+1);
max_len=len1<len2?len2:len1;
if(palindrome.length()<max_len)
palindrome=s.substring(i-(max_len-1)/2,1+i+max_len/2);
}
return palindrome;
}
public int isPalindrome(String s,int l,int r){
while(l>=0&&r<s.length()&&s.charAt(l)==s.charAt(r)){
l--;
r++;
}
return r-l-1;
}
}