Tengo que crear una función que tome una cadena, y debería regresar true
o false
basarse en si la entrada consiste en una secuencia de caracteres repetida. La longitud de la cadena dada siempre es mayor 1
y la secuencia de caracteres debe tener al menos una repetición.
"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)
He creado la siguiente función:
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
Verificar esto es parte del verdadero problema. No puedo permitirme una solución no eficiente como esta. En primer lugar, está recorriendo la mitad de la cadena.
El segundo problema es que está usando replace()
en cada ciclo lo que lo hace lento. ¿Existe una mejor solución con respecto al rendimiento?