ปัญหา
str สตริงเวทย์มนตร์ประกอบด้วย '1' และ '2' เท่านั้น และปฏิบัติตามกฎต่อไปนี้ -
สตริง str นั้นวิเศษมากเพราะการเชื่อมจำนวนของอักขระ '1' และ '2' ที่ต่อเนื่องกันทำให้เกิดสตริง str เอง
องค์ประกอบสองสามตัวแรกของสตริง str มีดังต่อไปนี้ -
str = "1221121221221121122……"
หากเราจัดกลุ่ม '1' และ '2' ที่ต่อเนื่องกันเป็น str มันจะเป็น -
1 22 11 2 1 22 1 22 11 2 11 22 ......
และการเกิดของ '1 หรือ '2' ในแต่ละกลุ่มคือ -
1 2 2 1 1 2 1 2 2 1 2 2 ......
เราจะเห็นได้ว่าลำดับเหตุการณ์ข้างต้นเป็นสตริงนั่นเอง
เราได้รับตัวเลขจำนวนเต็มเป็นอินพุต และเราจำเป็นต้องคืนค่าจำนวน '1' ในตัวเลข num แรกในสตริงเวทย์มนตร์ str
ตัวอย่างเช่น หากอินพุตของฟังก์ชันคือ −
const num = 6;
จากนั้นผลลัพธ์ควรเป็น −
const output = 3;
คำอธิบายผลลัพธ์:
6 องค์ประกอบแรกของสายเวทมนตร์ S คือ "12211" และประกอบด้วย 1 สามตัว ดังนั้นให้คืนค่า 3
ตัวอย่าง
รหัสสำหรับสิ่งนี้จะเป็น −
const num = 6; const magicalString = (num = 1) => { let ind = 12; let str = '1221121221221121122'; while(str.length < num){ const end = str.substring(str.length - 1) === '2' ? '1' : '2'; str = parseInt(str.substring(ind, ind + 1)) === 2 ? str + end + end : str + end; ind++; }; return (str.substring(0, num).match(/1/g)||[]).length; }; console.log(magicalString(num));
ผลลัพธ์
และผลลัพธ์ในคอนโซลจะเป็น −
3