在一个由小写英文字母(a-z)组成的字符串中,查找最长子串,其头尾字母相同,且中间不包含该头尾字母,并输出最左边的该类子串。
难点:只输入一个字母的情况,没有相同字母的情况,这两个处理好后就能运行起来了。
package test;
import java.util.Scanner;
public class test{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
String inS=sc.next();
char[] in=inS.toCharArray(); //转为字符数组方便处理
int l=in.length,tmp,ansl=0,ans=0,sign=0;
if(l==1) {
System.out.print(in[0]); //处理只有一个字母的情况
return;
}
for(int i=0;i<l;i++){ //对每个字符遍历
tmp=0;
for(int j=i+1;j<l;j++){
if(in[i]!=in[j]){ //如果不相等tmp增加
tmp++;
}else{
sign=1; //相等则表示当前字符查找完毕
break;
}
}
if(tmp+2>ansl){ //不包含第一个字符和最后一个字符,所以+2
ansl=tmp+2;
ans=i; //ans是第一个字符下标
}
}
if(sign==0) {
System.out.print(in[0]); //没有相同字符情况
return;
}
for(int i=0;i<ansl;i++){
System.out.print(in[ans+i]);
}
}
}