Computer >> Máy Tính >  >> Lập trình >> Javascript

Chuỗi kỳ diệu:Câu hỏi trong JavaScript

Vấn đề

Một chuỗi ma thuật str chỉ bao gồm '1' và '2' và tuân theo các quy tắc sau -

Chuỗi str rất kỳ diệu vì việc nối số lần xuất hiện liền kề của các ký tự '1' và '2' sẽ tạo ra chính chuỗi str.

Một số phần tử đầu tiên của chuỗi str là sau -

str = "1221121221221121122……"

Nếu chúng ta nhóm các '1 và' 2 liên tiếp trong str, nó sẽ là -

1 22 11 2 1 22 1 22 11 2 11 22 ......

và số lần xuất hiện của '1 hoặc' 2 trong mỗi nhóm là -

1 2 2 1 1 2 1 2 2 1 2 2 ......

Chúng ta có thể thấy rằng chuỗi xuất hiện ở trên là chính chuỗi.

Chúng tôi được cung cấp một số nguyên num làm đầu vào và chúng tôi bắt buộc phải trả về số '1 trong số num đầu tiên trong chuỗi huyền diệu str.

Ví dụ:nếu đầu vào của hàm là -

const num = 6;

Sau đó, kết quả đầu ra phải là -

const output = 3;

Giải thích đầu ra:

6 phần tử đầu tiên của chuỗi ma thuật S là "12211" và nó chứa ba phần tử 1, vì vậy trả về 3.

Ví dụ

Mã cho điều này sẽ là -

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));

Đầu ra

Và đầu ra trong bảng điều khiển sẽ là -

3