Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

สตริงเป็นการรวมสตริงย่อยซ้ำๆ ใน JavaScript . หรือไม่


ปัญหา

เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับสตริงอักขระเป็นอาร์กิวเมนต์เดียว ฟังก์ชันของเราจำเป็นต้องตรวจสอบว่าสตริง str สามารถสร้างได้โดยใช้สตริงย่อยและผนวกสตริงย่อยหลายชุดเข้าด้วยกัน

ตัวอย่างเช่น หากอินพุตของฟังก์ชันคือ −

const str = 'thisthisthisthis';

จากนั้นผลลัพธ์ควรเป็น −

const output = true;

คำอธิบายผลลัพธ์:

เนื่องจากสตริงถูกสร้างขึ้นโดยการต่อท้ายสตริง 'นี้' ซ้ำๆ

ตัวอย่าง

รหัสสำหรับสิ่งนี้จะเป็น −

const str = 'thisthisthisthis';
const repeatedSubstring = (str = '') => {
   const {length} = str;
   const checkSubString = ss => {
      const m = ss.length;
      for (let i = 0; i < length; i += m)
         for (let j = 0; j < m; j++)
            if (str[i+j] !== ss[j])
               return false;
      return true;
   };
   let factor = 2, len;
   while (length/factor >= 1){
      while (length % factor) factor++;
      len = length/factor;
      if (checkSubString(str.substring(0,len))){
         return true;
      };
      factor++;
   };
   return false;
};
console.log(repeatedSubstring(str));

คำอธิบายโค้ด:

ประการแรก เราตั้งค่าฟังก์ชันการตรวจสอบรูปแบบสตริงย่อย

จากนั้น เราทำซ้ำผ่านปัจจัยที่เป็นไปได้ทั้งหมดที่แบ่งสตริง str เท่ากัน เพื่อพิจารณาว่าพบรูปแบบการทำซ้ำที่ใช้งานได้หรือไม่

ผลลัพธ์

และผลลัพธ์ในคอนโซลจะเป็น −

true