# 459.重复的子字符串
题目类别 |
---|
字符串 |
# 题目
给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成。给定的字符串只含有小写英文字母,并且长度不超过10000。
# 示例
输入:"abab" 输出:True 解释:可由字符串“ab"重复两次构成
# 代码
- 利用正则表达式
var repeatedSubstringPattern = function(s) {
let reg = /^(\w+)\1+$/ // \1 等于()中匹配的内容
return reg.test(s)
};
1
2
3
4
2
3
4
- 利用
repeat
,周期串s
var repeatedSubstringPattern = function(s) {
let len = s.length;
let i = 1;
while(i <= len / 2) {
if (len % i == 0 && s.slice(0, i).repeat(len/i) == s) {
return true
}
i++;
}
return false
};
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
- 借用字符串进行巧妙解法
- 将原字符串给出拷贝一遍组成新字符串
- 掐掉头尾留中间
- 如果还包含原字符串,则满足题意
var repeatedSubstringPattern = function(s) {
let s1 = (s + s).slice(1, -1);
return s1.indexOf(s) != -1;
};
1
2
3
4
2
3
4