Vấn đề
Chúng ta cần viết một hàm JavaScript nhận vào một chuỗi str chỉ chứa '[' hoặc ']'. Hàm phải thêm số lượng ngoặc vuông tối thiểu ('[' hoặc ']', ở bất kỳ vị trí nào) để chuỗi ngoặc kết quả hợp lệ. Cuối cùng trả về số lượng ngoặc nhỏ nhất đã thêm.
Ví dụ, nếu đầu vào là:
Đầu vào
const str = '[]]';
Đầu ra
const output = 1;
Giải thích
Vì nếu thêm '[' vào đầu, chuỗi sẽ cân bằng.
Ví dụ
Dưới đây là mã thực hiện:
const findAdditions = (str = '') => {
let left = 0;
let right = 0;
for (let i = 0; i < str.length; i++) {
if (str[i] === '[') {
left += 1;
} else if (str[i] === ']') {
if (left > 0) {
left -= 1;
} else {
right += 1;
}
}
}
return left + right;
};
console.log(findAdditions(str));
Kết quả
1