function isValid(s: string): boolean {
const size = s.length;
if (size % 2 !== 0) {
return false;
}
const hash = new Map([
[")", "("],
["]", "["],
["}", "{"],
]);
if (!hash.has(s[size - 1])) {
return false;
}
if (hash.has(s[0])) {
return false;
}
const bracketStack: string[] = [];
for (let i = 0; i < s.length; i++) {
const bracket = s[i];
if (bracketStack.length === 0 && hash.has(bracket)) {
return false;
}
if (hash.has(bracket)) {
if (bracketStack.length === 0 || hash.get(bracket) !== bracketStack[0]) {
return false;
}
bracketStack.shift();
} else {
bracketStack.unshift(bracket);
}
}
return bracketStack.length === 0;
}
console.log(isValid("()"));