Magical String
สตริงที่ประกอบด้วย '1' และ '2' ซึ่งจำนวนตัวอักษรติดกันของแต่ละกลุ่มจะสร้างสตริงเดิมขึ้นมา
str = "1221121221221121122..."
กลุ่ม: 1, 22, 11, 2, 1, 22, 1, 22, 11, 2, 11, 22...
จำนวน: 1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2... (เหมือน str เอง)
ปัญหา
รับ num นับจำนวน '1' ใน num ตัวแรกของ Magical String
ตัวอย่าง
const num = 6;
6 ตัวแรก: "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