LeetCode 20 有效的括号

LeetCode 20 有效的括号

给定一个代表包含一系列括号{}、[]、()的字符串,判断该字符串是否是一个合法的字符串(同类型左右括号匹配,且必须是连续的)
辅助栈

class Solution {
    public boolean isValid(String s) {
        if(s==null || s.length()==0) return true;
        
        /*存在先后顺序的情况使用栈来判断*/
        List<Character> stack = new ArrayList<>();
        int top = -1;
        for(int i=0;i<s.length();i++){
            char ch = s.charAt(i);
            switch(ch) {
                case '(':
                case '{':
                case '[': {
                    stack.add(ch);top++;
                    break;
                }
                case ')': {
                    if(top>-1 && stack.get(top)=='('){
                        stack.remove(top);top--;
                        break;
                    }
                    return false;
                }
                case '}': {
                    if(top>-1 && stack.get(top)=='{'){
                        stack.remove(top);top--;
                        break;
                    }
                    return false;
                }
                case ']': {
                    if(top>-1 && stack.get(top)=='['){
                        stack.remove(top);top--;
                        break;
                    }
                    return false;
                }
            }
        }
        if(top!=-1) return false;
        else return true;
    }
}
posted @ 2020-08-14 09:51  CodeSPA  阅读(80)  评论(0编辑  收藏  举报