判斷字符串是否由子串拼接而成

題目描述

給出一個非空的字符串,判斷這個字符串是否是由它的一個子串進行多次首尾拼接構成的。

例如,"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()
          返回此對象本身(它已經是一個字符串!)。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章