牛客题目链接 1. 题目考点 滑动窗口机制 2. 考点解析 将重复字符串看成是两个连续的窗口,窗口最大值为 len / 2,比较两个窗口内的字符,逐渐缩小窗口(O(n^3)) public int solve (String a) { // write code here char[] chars = a.toCharArray(); int len = chars.length; int maxLen = len / 2; // 提示:i 表示右边窗口的大小,j 表示左边窗口开始下标 for (int i= maxLen; i >= 1; i--) { for (int j = 0; j <= len - 2 * i; j++) { if (check(chars, j, i)) return 2 * i; } } return 0; } public boolean check(char[] chars, int start, int len) { for (int i = start; i < start + len; i++) if (chars[i] != chars[i+len]) return false; return true; } 开始使用的时间复杂度为 O(n!),一直超时