Chúng ta cần viết một hàm JavaScript nhận vào một chuỗi có thể chứa một số ngoặc mở và đóng. Hàm nên kiểm tra xem với tất cả các ngoặc mở có tồn tại ngoặc đóng tương ứng hay không. Nếu các ngoặc khớp đúng, hàm trả về true, ngược lại false.
Ví dụ:
f('(hello (world))') = true f('(hello (world)') = falseVí dụ
Dưới đây là mã nguồn:
const str1 = '(hello (world))'; const str2 = '(hello (world)'; const validateBrackets = (str = '') => { const strArr = str.split(''); let counter = 0; for (let i = 0, len = strArr.length; i < len; i++) { if (strArr[i] === "(") { counter++; }else if (strArr[i] === ")") { counter--; }; if (counter < 0) { return false; }; }; if (counter === 0) { return true; }; return false; }; console.log(validateBrackets(str1)); console.log(validateBrackets(str2));Kết quả
Đầu ra trên console:
true false
Lưu ý: Code chỉ kiểm tra ngoặc đơn '()'. Để hỗ trợ nhiều loại ngoặc [], {}, cần dùng stack lưu loại ngoặc mở.