有效的括号:判断字符串中的 () [] {} 是否成对且顺序正确。
思路:左括号入栈,遇右括号弹栈检查是否匹配;最后栈须为空。
function isValid(s) {
const map = { ')': '(', ']': '[', '}': '{' }
const stack = []
for (const ch of s) {
if (!map[ch]) stack.push(ch) // 左括号
else {
if (stack.pop() !== map[ch]) return false
}
}
return stack.length === 0
}- 时间
O(n),空间O(n) - 常见变体:最长有效括号(用栈存下标)、删除最少字符使括号有效