Chúng tôi được yêu cầu viết một hàm JavaScript sử dụng một chuỗi. Nó phải trả về true hoặc false dựa trên việc đầu vào có chứa 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.
Ví dụ -
- "aa" phải trả về true vì nó hoàn toàn chứa hai chuỗi "a"
- "aaa" phải trả về true vì nó hoàn toàn chứa ba chuỗi "a"
- "abcabcabc" phải trả về true vì nó chứa hoàn toàn ba chuỗi "abc"
- "aba" phải trả về false vì ít nhất nó phải có hai chuỗi con giống nhau và không có gì khác
- "ababa" phải trả về false vì "ab" tồn tại hai lần nhưng "a" thừa nên sai
Ví dụ
const checkCombination = (str = '') => { if( str.length==1 ) { return true; }; for(let i = 1; i <= str.length / 2; i++){ if(str.length % i !== 0){ continue; } const sub = str.substring(0, i); if(isRepeating(sub, str)){ return true; }; }; return false; } const isRepeating = (sub, str) => { if(str.length > sub.length){ let left = str.substring(0,sub.length); let right = str.substring(sub.length, str.length); return left===sub && isRepeating(sub,right); }; return str === sub; } console.log(checkCombination('aa')); console.log(checkCombination('aaa')); console.log(checkCombination('abcabcabc')); console.log(checkCombination('aba')); console.log(checkCombination('ababa'));
Đầu ra
Điều này sẽ tạo ra kết quả sau -
true true true false false