public static void main(String[] args) { System.out.println(Text.traverse("fdsfdierownrjbnmbjkkkkjcxz;ihuiohurewl")); } public static int traverse(String string){ int res=1; int len=string.toCharArray().length; //好比len=5 第一次回文长度i=5,j=1 for(int i=len;i>1;i--){//遍历长度 //从string中取出长度为i的每一个string for(int j=0;j<len-i+1;j++){//len-i+1表明某长度字符串的个数 String tempStr=text.getStr(j,i, string); if(text.isEhco(tempStr)){ return i; } } } return res; } public static String getStr(int k,int len,String string){// return string.substring(k, k+len); } public static boolean isEhco(String string){ String string2="#"; char chars[]=string.toCharArray(); for(int i=0;i<chars.length;i++){ string2+=chars[i]+"#"; } char chars2[]=string2.toCharArray(); for(int i=0;i<chars2.length;i++){ if(chars2[i]!=chars2[chars2.length-i-1]){ return false; } } return true; }
这里最重要的思想是在字串中以及字串两端加一个*号,这样的话奇数长度仍是奇数长度,偶数长度会变成奇数长度。其判断条件就同样了
java