Const
function isValid(s: string): boolean {
const map = new Map<string, string>(Object.entries({
')': '(',
']': '[',
'}': '{',
}));
const stack: string[] = [];
// 维护右括号到左括号的映射关系 + 从左往右看字符碰到左括号入栈,碰到右括号就让左括号出栈然后匹配映射关系
for (let i = 0; i < s.length; i++) {
// 如果是右括号
if (map.has(s[i])) {
const p = stack.pop()!;
if (map.get(s[i]) !== p) {
return false;
}
}
else {
// 否则是左括号,入栈
stack.push(s[i]);
}
}
// 如果栈中还有字符,说明没匹配完全,否则s为有效括号
return stack.length === 0;
};
20.有效的括号
给定一个只包括
'('
,')'
,'{'
,'}'
,'['
,']'
的字符串s
,判断字符串是否有效。有效字符串需满足:
示例 1:
输入:
s = "()"
输出:
true
示例 2:
输入:
s = "()[]{}"
输出:
true
示例 3:
输入:
s = "(]"
输出:
false
示例 4:
输入:
s = "([)]"
输出:
false
示例 5:
输入:
s = "{[]}"
输出:
true
提示:
1 <= s.length <= 10^4
s
仅由括号'()[]{}'
组成