源于网易2016秋招面试题,代码语言使用JAVA
package test;
/**
* 算法:求一字符串中存在的回文数的最大前缀
*/
public class Test{
public static void main(String[] args){
String title = "asfbjsgbhjfbgjhdooyoobghjdbgjjg"; //11个字符
String str="";
int k=0,q=0;
char[] chars = title.toCharArray();
for(int i=3;i<chars.length;i++){ //从三个字符开始测
int times=0;
for(int j=i;j<=chars.length;j++){ //测的次数
k=j-i;
while(q<i) {
// System.out.print(chars[k+q]);
str+=chars[k+q];
q++;
}
System.out.print("str="+str+"-->"+str.length());
String turnStr = turnBackStr(str);
if(turnStr.equals(str)){
System.out.println(" 是回文数,前缀长度为"+k);
}else{
System.out.println();
}
str="";
times++;
q=0;
}
System.out.println("执行了"+times+"次");
}
}
public static String turnBackStr(String str){
char[] strchar = str.toCharArray();
char temp; String newStr="";
int length=strchar.length-1;
for(int f=0;f<strchar.length/2;f++){
temp = strchar[f];
strchar[f] = strchar[length];
strchar[length--] = temp;
}
for(int i=0;i<strchar.length;i++)
newStr+=strchar[i];
System.out.print("---------------->"+ newStr);
return newStr;
}
}
部分结果