如何检查字符串是否完全由相同的子字符串组成?
我必须创建一个接受字符串的函数,它应该返回或基于输入是否由重复的字符序列组成。给定字符串的长度始终大于,并且字符序列必须至少有一次重复。true
false
1
"aa" // true(entirely contains two strings "a")
"aaa" //true(entirely contains three string "a")
"abcabcabc" //true(entirely containas three strings "abc")
"aba" //false(At least there should be two same substrings and nothing more)
"ababa" //false("ab" exists twice but "a" is extra so false)
我创建了以下函数:
function check(str){
if(!(str.length && str.length - 1)) return false;
let temp = '';
for(let i = 0;i<=str.length/2;i++){
temp += str[i]
//console.log(str.replace(new RegExp(temp,"g"),''))
if(!str.replace(new RegExp(temp,"g"),'')) return true;
}
return false;
}
console.log(check('aa')) //true
console.log(check('aaa')) //true
console.log(check('abcabcabc')) //true
console.log(check('aba')) //false
console.log(check('ababa')) //false
检查这是真正问题的一部分。我负担不起像这样的非高效解决方案。首先,它循环穿过字符串的一半。
第二个问题是它在每个循环中使用,这使得它很慢。在性能方面是否有更好的解决方案?replace()