刷题4:有效的括号

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了刷题4:有效的括号相关的知识,希望对你有一定的参考价值。

Leetcode: 20 有效的括号

关键点:

遍历到左括号"{","[","("时,入栈;遍历到右括号"}","]",")"时,判断栈顶是否为相应的左括号,如果是,则将栈顶元素出栈,如果不是或栈为空,则返回false。遍历字符完之后还要判断栈是否为空,目的是防止只有左括号,如“[[,{[”,如栈为空,则返回true,否则返回false。代码如下:

class Solution {
    Stack<Character> st = new Stack<Character>();
    HashMap<Character,Character> map = new HashMap<Character,Character>();

    public boolean isValid(String s) {
        //注意: \'}\':\'{\',而不是\'{\':\'}\'
        map.put(\'}\',\'{\');
        map.put(\')\',\'(\');
        map.put(\']\',\'[\');

        for(char ch:s.toCharArray()){
            if(map.containsKey(ch)){
                if(!st.isEmpty() && st.peek() == map.get(ch))
                    st.pop();
                else
                    return false;
            }
            else
                st.push(ch);
        }
        
        //防止只有左括号,如”[[,{[”
        return st.isEmpty();
    }
}

以上是关于刷题4:有效的括号的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode刷题--有效的括号(简单)

LeetCode刷题记录_有效的括号

2021/5/22 刷题笔记有效的括号与栈

LeetCode刷题-20.有效括号(JS)

LeetCode刷题20-简单-有效的括号

LeetCode刷题20-简单-有效的括号