[路飞]leetcode-20.有效的括号

280 阅读1分钟

给定一个只包括 '(',')','{','}','[',']' 的字符串 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
};