题目描述
在一个由小写英文字母(a-z)组成的字符串中,查找最长子串,其头尾字母相同,且中间不包含该头尾字母,并输出最左边的该类子串。
输入说明
1行,为待处理字串(长度≤200)。
输出说明
一行,为满足条件的子串
输入样例
adfasjdoiasldhlfa
输出样例
fasjdoiasldhlf
解题思路
首先将字符串转化为字符数组,然后通过选择排序进行字符匹配,当匹配到一样的字符时便跳出第二层循环,并记录当前字符串的长度与起始点,以此类推逐渐找到最大值。
代码
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
String str = sc.next();
char zf[] = str.toCharArray();
int max = 0;
int start=0;
int end=0;
for(int i = 0;i<str.length()-1;i++){
for(int j = i+1;j<str.length();j++){
if(zf[i]==zf[j]){
if(j-i>max){
max = j-i;
start = i;
end = j;}
break; }
}
}
for(int s = start;s<=end;s++){
System.out.print(zf[s]);
}
}
}