给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。
示例 1:
输入:s = "()" 输出:true 示例 2:
输入:s = "()[]{}" 输出:true 示例 3:
输入:s = "(]" 输出:false 示例 4:
输入:s = "([)]" 输出:false 示例 5:
输入:s = "{[]}" 输出:true
提示:
1 <= s.length <= 104 s 仅由括号 '()[]{}' 组成
var isValid = function(s) {
const left = ['(', '{', '[']
const right = [')', '}', ']']
const stack = []
let bool = true
for (let key of s.split('')) {
const lIndex = left.indexOf(key)
const rIndex = right.indexOf(key)
if (lIndex > -1) {
stack.push(lIndex)
}
if (rIndex > -1) {
if (stack.pop() !== rIndex) {
bool = false
break
}
}
}
bool = !bool ? bool : stack.length === 0
return bool
};
解题思路: 用一个栈来维护入栈和出栈的元素是否匹配,不是则马上return false, 最后再判断一下栈的长度是否归0