2018招商銀行春招筆試程式設計題第一題
阿新 • • 發佈:2019-02-17
題目描述:給出一個非空的字串,判斷這個字串是否是由它的一個子串進行多次首尾拼接構成的。
例如,“abcabcabc”滿足條件,因為它是由“abc”首尾拼接而成的,而“abcab”則不滿足條件。//畫外音:即不考慮只有本身是子串的這種情況。
輸入描述:非空字串
輸出描述:如果字串滿足上述條件,則輸出最長的滿足條件的子串,如果不滿足條件,則輸出false。
例如,“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); } }