459.重复的子字符串

给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成。给定的字符串只含有小写英文字母,并且长度不超过 10000。

示例 1:

1
2
3
4
5
输入: "abab"

输出: True

解释: 可由子字符串 "ab" 重复两次构成。

示例 2:

1
2
3
输入: "aba"

输出: False

示例 3:

1
2
3
4
5
输入: "abcabcabcabc"

输出: True

解释: 可由子字符串 "abc" 重复四次构成。 (或者子字符串 "abcabc" 重复两次构成。)

循环

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/**
* @param {string} s
* @return {boolean}
*/
var repeatedSubstringPattern = function (s) {
let len = s.length;
if (len < 2) return false;
let k = "";
for (let i = 0; i < s.length / 2; i++) {
k += s[i];
if (len % (i + 1) == 0) {
let arr = s.split(k);
if (arr.every((e) => e == "")) {
return true;
}
}
}
return false;
};

参考答案

1
2
3
4
5
6
7
8
9
/**
* @param {string} s
* @return {boolean}
*/
var repeatedSubstringPattern = function (s) {
let temp = s + s;
temp = temp.substring(1, temp.length - 1);
return temp.indexOf(s) == -1 ? false : true;
};