/** * Created by Administrator on 2017/4/23. * 找出一个数组中的最大回文字符串 * 思路:1,遍历每个字符,从第一个到最后一个。for() * 2.以当前字符为基准点,向左向右延伸,看左右是否相等[注意基数回文与偶数回文判断方法不一样]。for(j) * 3.遇到不相等的时候,把回文长度赋值给current,比较current与max,用break跳出循环 * 4.返回值 */ public class Synonym { public String circuit(String str){ int current=0; int max=0; String biggest=" "; for(int i=0;i<str.length();i++){ for(int j=0;j+i<str.length()&&i-j>=0;j++) {if(str.charAt(i-j)!=str.charAt(i+j)) { current=2*j-1; if(current>max){ max=current; biggest=str.substring(i+1-j,i+j); } break; } } for(int j=0;j+i+1<str.length()&&i-j>=0;j++){ if(str.charAt(i-j)!=str.charAt(i+1+j)){ current=2*j; if(current>max){ max=current; biggest=str.substring(i+1-j,i+1+j); } break; } } } return max+" "+biggest; } public static void main(String[] args) { Synonym sy=new Synonym(); System.out.println( sy.circuit("aabbbcccdddccbb")); } }
转载于:https://my.oschina.net/u/3321842/blog/885412