题目
给出一个非空的字符串,判断这个字符串是否是由它的一个子串进行多次首尾拼接构成的。
例如,"abcabcabc"满足条件,因为它是由"abc"首尾拼接而成的,而"abcab"则不满足条件。
思路
暴力解,可以过:
import java.io.*; public class Main { public static void main(String[] ars) throws IOException { BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); String str = bf.readLine(); char[] arr = str.toCharArray(); int maxLen = 0; String res = ""; for (int i = 0; i < arr.length / 2; i++) { StringBuilder sb = new StringBuilder(); int j = 0; while (j <= i) { sb.append(arr[j++]); } String sub = sb.toString(); //最长子串 while (sb.length() < str.length()) { sb.append(sub); } String after = sb.toString(); if (after.equals(str) && sub.length() > res.length()) { res = sub; } } System.out.println(res.equals("") ? false : res); } }
总结
今天开始笔试锻炼,每日一题。笔试无限跪,迎哥说去搞搞 CF ,结果他自己被 CF DIV2 B 题劝退了。。。就说叫我搞真题试试,半信半疑,招行信用卡 2018 第一道。