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