给定一个字符串 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);//输出有子串时的结果