Devo creare una funzione che accetta una stringa e dovrebbe restituire true
o false
basarsi sul fatto che l'input sia costituito da una sequenza di caratteri ripetuta. La lunghezza della stringa data è sempre maggiore di 1
e la sequenza di caratteri deve avere almeno una ripetizione.
"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)
Ho creato la seguente funzione:
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
Il controllo di questo fa parte del vero problema. Non posso permettermi una soluzione non efficiente come questa. Prima di tutto, scorre in mezzo alla metà della stringa.
Il secondo problema è che sta usando replace()
in ogni ciclo che lo rende lento. Esiste una soluzione migliore per quanto riguarda le prestazioni?