public class Palindrome {
private static String longestPalindrome(String str){
int n=str.length();
if(str==""){
return "";
}
String longest=str.substring(0, 1);
for(int i=0;i<n-1;i++){
//开始每次都按照一个字母一个字母走,当走到临界处(比如aba,b就是临界处。abba则是另一种情况。也就是对应的下面的p2.分情况应该就是分这两种情况),则返回最长的回文数
String p1=expandAroundCenter(str,i,i);
if(p1.length()>longest.length()){
longest=p1;
}
String p2=expandAroundCenter(str,i,i+1);
if(p2.length()>longest.length()){
longest=p2;
}
}
return longest;
}
/**
* 比如aba,这里当i指向b的时候,此函数会返回aba,会以b为中心,向左向右查询回文数,并返回最长的回文数
*/
private static String expandAroundCenter(String str,int l,int r){
int n=str.length();
while(l>=0&&r<=n-1&&str.charAt(l)==str.charAt(r)){
l--;
r++;
}
return str.substring(l+1, r);
}
public static void main(String[] args){
String str="bb";
String s=longestPalindrome(str);
System.out.println(s.length());
}
}