# 459. 重复的子字符串
/*
* @lc app=leetcode.cn id=459 lang=javascript
*
* [459] 重复的子字符串
*/
// @lc code=start
/**
* @param {string} s
* @return {boolean}
*/
// var repeatedSubstringPattern = function(s) {
// if (s === 1) return true;
// const midLength = Math.floor(s.length / 2);
// let canRepeat = false;
// dfs(s, s[0], 1);
// return canRepeat;
// /**
// *
// * @param {字符串} code
// * @param {子串} str
// * @param {循环子串的下一个开始索引} end
// * @returns
// */
// function dfs(code, str, end) {
// const length = str.length;
// if (length > midLength) return; // 表示字符串超过 不可能存在重复
// const next = code.substring(end, end + length);
// if (next !== str) {
// // 表示子串已经存在不同的 停止循环
// const sonStr = code.substr(0, length + 1);
// dfs(code, sonStr, length + 1);
// return;
// } else if (end + length === code.length) return (canRepeat = true); // 表示可重复
// dfs(code, str, end + length);
// }
// };
var repeatedSubstringPattern = function(s) {
const length = s.length;
for (let i = 1; i * 2 <= length; i++) {
if (length % i === 0) {
let match = true;
for (let j = i; j < length; j++) {
console.log(s.charAt(j), s.charAt(j - i), j, i, j - i);
if (s.charAt(j) !== s.charAt(j - i)) {
match = false;
break;
}
}
if (match) {
return true;
}
}
}
return false;
};
console.log(repeatedSubstringPattern("ababab"));
// console.log(repeatedSubstringPattern("bbb"));
// console.log(repeatedSubstringPattern("babab"));
// console.log(repeatedSubstringPattern("abcabcabcabc"));
// console.log(repeatedSubstringPattern("abac"));
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70