给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。力扣原文
示例 1:
输入:s = "()"
输出:true
示例 2:
输入:s = "()[]{}"
输出:true
示例 3:
输入:s = "(]"
输出:false
示例 4:
输入:s = "([)]"
输出:false
示例 5:
输入:s = "{[]}"
输出:true
题目理解,判断是否是闭合的括号表达式
解题思路,
- 利用数组,模拟出栈、入栈。
- 遇到(、{、[ 则 stack.push(item)入栈
- 遇到)、{、[ 且stack.top是否是对应的符号,是就出栈,不是就代表着不是合法的括号表达式
- 遍历到最后stack.length大于0则也不是合法括号表达式
var isValid = function(s) {
let map = {')':'(','}':'{',']':'['};
let stack=[];
for (let i = 0 ; i < s.length; i++) {
let item=s[i];
if(item==="("||item==="{"||item==="["){
stack.push(item)
}else if(map[item]&&stack[stack.length-1]===map[item]){
stack.pop()
}else{
return false
}
}
return stack.length===0
};