题目
给定一个仅包含字符'(',')'、'{', '}', '[' 和 ']'的字符串s,确定输入字符串是否有效。
输入字符串在以下情况下有效:
- 打开的括号必须用相同类型的括号关闭。
- 必须按照正确的顺序关闭括号。
- 每个闭括号都有一个相应的相同类型的开括号。
示例 1:
输入: s = "()"
输出: true
示例 2:
输入: s = "()[]{}"
输出: true
示例 3:
输入: s = "(]"
输出: false
思路
function isValid(s: string): boolean {
const stack = [];
// 出栈条件
const map = {
'(': ')',
'[': ']',
'{': '}',
};
for (let i = 0; i < s.length; i++) {
const char = s[i];
const last = stack[stack.length - 1];
if (last != null && map[last] === char) stack.pop();
else stack.push(char);
}
return !stack.length;
}