題目描述
給出一個非空的字符串,判斷這個字符串是否是由它的一個子串進行多次首尾拼接構成的。
例如,"abcabcabc"滿足條件,因爲它是由"abc"首尾拼接而成的,而"abcab"則不滿足條件,輸出false。
輸入描述:
abcabc
輸出描述:
abc
Java代碼實現如下
import java.util.Scanner;
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++)
{
//每次截取前i個字符串
String is_sub_str = str.substring(0,i);
//利用正則表達式,替換原字符串的內容,如果最後爲空,則可以被完全替換,所以是最長字串
String temp = str.replaceAll(is_sub_str, "");
if(temp.length() == 0)
{
System.out.println(is_sub_str);
return;
}
}
System.out.println(false);
}
}
複習一下字符串常用的方法
char |
charAt(int index) 返回指定索引處的 char 值。 |
boolean |
equals(Object anObject) 將此字符串與指定的對象比較。 |
int |
indexOf(String str) 返回指定子字符串在此字符串中第一次出現處的索引。 |
int |
length() 返回此字符串的長度。 |
String |
replace(CharSequence target, CharSequence replacement) 使用指定的字面值替換序列替換此字符串所有匹配字面值目標序列的子字符串。 |
String |
replaceAll(String regex, String replacement) 使用給定的 replacement 替換此字符串所有匹配給定的正則表達式的子字符串。 |
String[] |
split(String regex) 根據給定正則表達式的匹配拆分此字符串。 |
char[] |
toCharArray() 將此字符串轉換爲一個新的字符數組。 |
String |
substring(int beginIndex, int endIndex) 返回一個新字符串,它是此字符串的一個子字符串。 |
String |
toString() 返回此對象本身(它已經是一個字符串!)。 |