1. 程式人生 > >2018招商銀行春招筆試程式設計題第一題

2018招商銀行春招筆試程式設計題第一題

題目描述:給出一個非空的字串,判斷這個字串是否是由它的一個子串進行多次首尾拼接構成的。
例如,“abcabcabc”滿足條件,因為它是由“abc”首尾拼接而成的,而“abcab”則不滿足條件。//畫外音:即不考慮只有本身是子串的這種情況。
輸入描述:非空字串
輸出描述:如果字串滿足上述條件,則輸出最長的滿足條件的子串,如果不滿足條件,則輸出false。

樣例:輸入abcabc    輸出abc

演算法思想:因為字串起碼由兩個子串組成,那麼我們從字串中間位置開始擷取,再將子串複製“字串長除以子串長”次,與原字串比較是否一樣。

程式碼如下:

import java.util.Scanner;
public class ZhaoHang18_1 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String str = sc.nextLine();
		
		for(int i=str.length()/2-1;i>=0;i--){
			String substring = str.substring(0, i+1);
			StringBuffer sb = new StringBuffer();
			for(int j=0;j<str.length()/substring.length();j++){
				sb.append(substring);
			}
			if(sb.toString().equals(str)){
				System.out.println(substring);
				return;
			}
			
		}
		System.out.println(false);
	}
}