给定一个字符串 s , 请计算输出含有连续两个 s 作为子串的最短字符串。 注意两个 s 可能有重叠部分。例如, "ababa" 含有两个 "aba".
数据范围:输入的字符串长度满足
,且保证只含有小写英文字母
输入包括一个字符串s,字符串长度length(1 ≤ length ≤ 50),s中每个字符都是小写字母.
输出一个字符串,即含有连续两个s作为子串的最短字符串。
abracadabra
abracadabracadabra
a
aa
import java.util.Scanner;
public class Main{
public static void main (String[] args) {
Scanner input = new Scanner(System.in);
String s = input.nextLine();
String out = s + s;
String sub = "";
int len = s.length();
int index = len;
for(int i= len-1; i >= 1; i--) {
sub = s.substring(i,len);
if(s.startsWith(sub)) index = i;
}
if(index != len) out = s + s.substring(len-index,len);
System.out.print(out);
}
}
//逆序取子串,用s.startswith(s1)判断子串是不是符合条件,记录最大的子串的index, out = s + s.substring(len-index,len);//输出有子串时的结果