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