Vấn đề
Chuỗi thần kỳ str chỉ chứa '1' và '2' và tuân theo quy tắc: nối số lần xuất hiện liên tiếp của '1' và '2' tạo ra chính chuỗi đó.
Vài phần tử đầu:
str = "1221121221221121122..."
Nhóm các '1' và '2' liên tiếp:
1 22 11 2 1 22 1 22 11 2 11 22 ......
Số lần xuất hiện:
1 2 2 1 1 2 1 2 2 1 2 2 ......
Dãy số lần xuất hiện chính là chuỗi gốc.
Cho số nguyên num, trả về số lượng '1' trong num ký tự đầu của chuỗi thần kỳ.
Ví dụ:
const num = 6;
Kết quả:
const output = 3;
Giải thích:
6 ký tự đầu: "12211" chứa ba '1'.
Ví dụ
Mã thực hiện:
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));
Kết quả
Kết quả in ra console:
3