import java.util.*; /** * 打印字符串中最大的回文子串 * 时间复杂度O(n power 3),空间复杂度O(1) * @author HUOYIN * @version 1.0 2010-10-28 上午11:19:14 * */ public class EchoString { public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.print("Please input a string: "); String str = scan.nextLine(); int start = 0, length = 1; int p = 0, q = 0; for (int i = 0; i < str.length() - length; i++) { p = i; for (int j = str.length() - 1; j > i; j--) { q = j; while (str.charAt(p) == str.charAt(q) && p < q) { p++; q--; } if (p > i && (p == q || q == p - 1) && (j-i+1)>length) { start = i; length = j - i + 1; } else { p=i; } } } System.out.println("the max-length palindrome: " + str.substring(start, start+length)); } } import java.util.*; /** * 打印字符串中最大的回文子串 * 时间复杂度O(n power 2),空间复杂度O(1) * @author HUOYIN * @version 1.0 2010-10-28 上午11:19:14 * */ public class MaxPalindrome { public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.print("Please input a string: "); String str = scan.nextLine(); int start = 0, maxlength = 1, j=0; for (int i = 0; i < str.length()-1-maxlength/2; i++) { //even palindrome determination for(j = 0; (i-j)>=0 && (i+j+1)<str.length(); j++) { if(str.charAt(i-j)!=str.charAt(i+j+1)) { break; } } if(j*2>maxlength) { maxlength=j*2; start=i-j+1; } //odd palindrome determination for(j = 1; (i-j)>=0 && (i+j)<str.length(); j++) { if(str.charAt(i-j)!=str.charAt(i+j)) { break; } } j--; if((j*2+1)>maxlength) { maxlength=j*2+1; start=i-j; } } System.out.printf("(start)=%d, (maxlength)=%d, (the max-length palindrome string)=/"%s/"/n", start, maxlength, str.substring(start, start+maxlength)); } }