Tôi phải tạo một hàm lấy một chuỗi và nó sẽ trả về true
hoặc false
dựa trên việc đầu vào có bao gồm một chuỗi ký tự lặp lại hay không. Độ dài của chuỗi đã cho luôn lớn hơn 1
và chuỗi ký tự phải có ít nhất một lần lặp lại.
"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)
Tôi đã tạo ra các chức năng dưới đây:
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
Kiểm tra điều này là một phần của vấn đề thực sự. Tôi không thể mua một giải pháp không hiệu quả như thế này. Trước hết, nó lặp qua một nửa chuỗi.
Vấn đề thứ hai là nó đang sử dụng replace()
trong mỗi vòng lặp làm cho nó chậm. Có một giải pháp tốt hơn về hiệu suất?