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 1ABcó đ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