最大回文串 变种
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最大回文串 变种相关的知识,希望对你有一定的参考价值。
1 /** 2 * 求一个字符串的最大回文串,可以在两边和中间删除任意多个字符,使剩下的字符串为回文串 3 * 可以使用回溯法 4 */ 5 import java.util.Scanner; 6 7 public class Palindrome { 8 static int[] flag; 9 static int length; 10 static String s; 11 static int maxLength; 12 static String maxString; 13 14 public static void main(String[] args) { 15 Scanner sc = new Scanner(System.in); 16 while(sc.hasNext()){ 17 s = sc.next(); 18 length = s.length(); 19 flag = new int[length]; 20 maxLength = 0; 21 f(0); 22 System.out.println(maxString + " " + maxLength); 23 } 24 } 25 26 public static void f(int n){ 27 //递归出口 28 if(n==length){ 29 StringBuffer sb = new StringBuffer(); 30 for(int i=0;i<length;i++){ 31 if(flag[i]==1){ 32 sb.append(s.charAt(i)); 33 } 34 } 35 //判断回文串 36 if(sb.toString().equals(sb.reverse().toString())&&sb.length()>maxLength){ 37 maxString = sb.toString(); 38 maxLength = sb.length(); 39 } 40 return; 41 } 42 43 //要 44 flag[n]=1; 45 f(n+1); 46 47 //不要 48 flag[n]=0; 49 f(n+1); 50 } 51 }
以上是关于最大回文串 变种的主要内容,如果未能解决你的问题,请参考以下文章
Maximum Palindromic String(最大回文串)