给出一个非空的字符串,判断这个字符串是否是由它的一个子串进行多次首尾拼接构成的。
例如,"abcabcabc"满足条件,因为它是由"abc"首尾拼接而成的,而"abcab"则不满足条件。
输入描述:
非空字符串
输出描述:
如果字符串满足上述条件,则输出最长的满足条件的的子串;如果不满足条件,则输出false。
示例1
输入
abcabc
输出
abc
解题思路:
如果满足题意的子串str,则若替换掉源字符串中所有str的形式,那么源字符串长度将变为0。
所以根据这个思路,从头遍历至中间,因为子串最长就是源字符串的一半
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
for(int i=1; i<=str.length()/2; i++){
String temp = str.substring(0, i);
if(str.replaceAll(temp, "").length() == 0){
System.out.print(temp);
return;
}
}
System.out.print(false);
}
}