public static String longestPalindrome(String s) {
if (s.length() <= 1) { return s; } int start = 0, index = 0, maxLength = 0;
while (index < s.length()) { int left = index, right = index; // 先找到字符一样的字符串 while (index < s.length() - 1 && s.charAt(index) == s.charAt(index + 1)) { index ++; right ++; } // 从某个点开始,向两边扩散寻找最长串 while (left >= 0 && right < s.length() && s.charAt(left) == s.charAt(right)) { left --; right ++; } left ++;
if (right - left + 1 > maxLength) { maxLength = right - left +1;right --; start = left; } index ++; }
return s.substring(start, start + maxLength); }
public static void main(String[] args) { String s = "bbabba"; System.out.println(longestPalindrome(s)); s = "cbbd"; System.out.println(longestPalindrome(s)); s = "bb"; System.out.println(longestPalindrome(s)); } }