本文采用中心拓展法,奇数子串和偶数子串分开处理。
------------------------------------------------------- import java.util.Scanner; public class Solution { public static String longestPalindrome(String s) { //非空判断 if((s==null)||(s.length()==0)) return null; //将字符串转换为字符数组 char[] arr=s.toCharArray(); int first=0; int end=0; //查找奇数位的回文串 for(int i=0;i<arr.length;i++) { int pre=i-1,late=i+1; while((pre>=0)&&(late<arr.length)&&(arr[pre]==arr[late])){ pre--; late++; } if(late-pre-2>end-first) { first=pre+1; end=late-1; } } //查找偶数位的回文串 for(int i=0;i<arr.length-1;i++) { if(arr[i]!=arr[i+1]) continue; else{ int pre=i-1,late=i+2 ; while((pre>=0)&&(late<arr.length)&&(arr[pre]==arr[late])){ pre--; late++; } if(late-pre-2>end-first) { first=pre+1; end=late-1; } } } //查找结束 将数组转化为字符串返回 return String.valueOf(arr,first,end-first+1); } public static void main(String[] args){ System.out.println("请输入一段字符串:"); Scanner scan=new Scanner(System.in); String word=longestPalindrome(scan.nextLine()); System.out.println("该字符串中的回文子串:"+word); } }