Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Tìm điểm số của ngoặc vuông trong JavaScript

Vấn đề

Chúng ta cần viết một hàm JavaScript nhận vào một chuỗi ngoặc vuông cân bằng str làm đối số duy nhất. Hàm phải tính và trả về điểm số của chuỗi dựa trên quy tắc:

  • [] có điểm 1
  • AB có điểm A + B, với A, B là chuỗi ngoặc cân bằng
  • [A] có điểm 2 * A, với A là chuỗi ngoặc cân bằng

Ví dụ, nếu đầu vào là:

Đầu vào

const str = '[][]';

Đầu ra

const output = 2;

Ví dụ

Dưới đây là mã thực hiện:

const findScore = (str = '') => {
  const arr = [];
  for (const char of str) {
    arr.push(char);
    while (arr[arr.length - 1] === ']') {
      arr.pop();
      if (arr[arr.length - 1] === '[') {
        arr.pop();
        arr.push(1);
      } else {
        let num = arr.pop();
        while (arr[arr.length - 1] >= 1) {
          num += arr.pop();
        }
        arr.pop();
        arr.push(2 * num);
      }
    }
  }
  return arr.reduce((acc, a) => acc + a, 0);
};
console.log(findScore(str));

Kết quả

2