5.有效的括号

  //5.有效的括号
    //给定一个只包括 '(',')','{','}','[',']'的字符串 s ,判断字符串是否有效。
    //有效字符串需满足:
    //左括号必须用相同类型的右括号闭合。
    //左括号必须以正确的顺序闭合。
    public boolean isValid(String s) {
        Stack<Character> stack = new Stack<>();

        for (char c : s.toCharArray()) {
//            如果是半边的括号就放进去等待匹配
//            放进对应的右半边括号是为了简化匹配,这样匹配的时候直接判断是不是相等就好了,节省时间
            if (c == '(') stack.push(')');
            if (c == '[') stack.push(']');
            if (c == '{') stack.push('}');
//            如果是半边的括号就放进去等待匹配


            if (c == ')' || c == ']' || c == '}') {
//               右括号放进去就开始匹配 一旦匹配失败就失败喽
//                stack.isEmpty()的时候加入右括号,肯定不能自己匹配(左边什么都没有),就失败了
                if (stack.isEmpty()||c != stack.pop()) return false;
            }
        }
        return stack.isEmpty();
    }

 

posted @ 2022-03-09 20:27  随遇而安==  阅读(27)  评论(0编辑  收藏  举报