Computer >> Máy Tính >  >> Lập trình >> Javascript

Kiểm tra xem một chuỗi có hoàn toàn được tạo bằng JavaScript chuỗi con giống nhau hay không

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