LeetCode 20

20. 有效的括号

思路:用一个栈记录右括号,遍历整个字符串,每遇到一个左括号,便将其对应的右括号压入栈中,可知内层的括号在栈顶,如果遇到右括号,分为两种情况,其一,栈内无元素,说明该右括号无落单,其二,弹出的栈顶元素与该右括号不同,说明该右括号匹配失败,两种情况都为false。最后,如果栈中仍然有元素,说明左括号落单,返回false,若无元素,则为true。

Java

class Solution {
    public boolean isValid(String s) {
        Stack<Character> st = new Stack<>();
        for(char c:s.toCharArray()){
            if(c=='('){
                st.push(')');
            }else if(c=='['){
                st.push(']');
            }else if(c=='{'){
                st.push('}');
            }else if(st.isEmpty()||c!=st.pop()){
                return false;
            }
        }
        return st.isEmpty();
    }
}
posted @ 2020-06-12 20:55  咸鱼不闲咋整啊  阅读(134)  评论(0编辑  收藏  举报