题目

给出一个非空的字符串,判断这个字符串是否是由它的一个子串进行多次首尾拼接构成的。

例如,"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 第一道。