Saya harus membuat fungsi yang mengambil string, dan itu harus kembali true
atau false
didasarkan pada apakah input terdiri dari urutan karakter yang diulang. Panjang string yang diberikan selalu lebih besar dari 1
dan urutan karakter harus memiliki setidaknya satu pengulangan.
"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)
Saya telah membuat fungsi di bawah ini:
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
Memeriksa ini adalah bagian dari masalah sebenarnya. Saya tidak mampu membeli solusi yang tidak efisien seperti ini. Pertama-tama, ia berputar melalui setengah dari string.
Masalah kedua adalah bahwa ia menggunakan replace()
di setiap loop yang membuatnya lambat. Apakah ada solusi yang lebih baik mengenai kinerja?