Chúng tôi được yêu cầu viết một hàm JavaScript có trong một chuỗi str chỉ chứa các ký tự -
'(', ')', '{', '}', '[' and ']'
Hàm của chúng ta sẽ xác định xem chuỗi đầu vào có hợp lệ không.
Chuỗi đầu vào hợp lệ nếu -
-
Dấu ngoặc mở phải được đóng bằng cùng một loại dấu ngoặc.
-
Dấu ngoặc mở phải được đóng theo đúng thứ tự.
Ví dụ -
-
"()" là một dấu ngoặc đơn hợp lệ
-
"() [] {}" là một dấu ngoặc đơn hợp lệ
-
"(]" là một dấu ngoặc đơn không hợp lệ
Ví dụ
Mã cho điều này sẽ là -
const str = "()[]{}"; const isValid = (str = '') => { const map=new Map(); map.set('{','}'); map.set('(',')'); map.set('[',']'); const b=[]; for(let i=0;i<str.length;i++){ if(map.has(str.charAt(i))){ b.push(str.charAt(i)); } else{ let pop=b.pop(); if(map.get(pop)!==str.charAt(i)){ return false; } }; }; return b.length===0; }; console.log(isValid(str));
Đầu ra
Và đầu ra trong bảng điều khiển sẽ là -
true false