ปัญหา
เราจำเป็นต้องเขียนฟังก์ชัน 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