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()); } }