ฉันต้องสร้างฟังก์ชั่นที่รับสายและมันควรจะกลับมา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()
ในแต่ละวงซึ่งทำให้ช้า มีวิธีแก้ปัญหาที่ดีกว่าเกี่ยวกับประสิทธิภาพหรือไม่