牛客题目链接
1. 题目考点
- 滑动窗口机制
2. 考点解析
- 将重复字符串看成是
两个连续的窗口
,窗口最大值为 len / 2,比较两个窗口内的字符,逐渐缩小窗口(O(n^3)
)
public int solve (String a) {
char[] chars = a.toCharArray();
int len = chars.length;
int maxLen = len / 2;
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!),一直超时