Loading...

有效括号序列

在这里插入图片描述

求解代码

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
public boolean isValid (String s) {
        char[] str = s.toCharArray();

        Stack<Character> stackData = new Stack<>();

        for(char c:str){
            if(c=='('){
                stackData.push(')');
            }else if(c=='['){
                stackData.push(']');
            }else if(c=='{'){
                stackData.push('}');
            }else if(stackData.isEmpty()||c!=stackData.pop()){
                return false;
            }
        }
        return stackData.isEmpty();
    }

小贴士

如果遇到了左括号,就把和这个左括号配对的右括号压入栈中,总共就3种括号:小括号、中括号和花括号;

如果遇到了右括号,分情况讨论:

  • 如果此时栈为空,说明无法构成有效的括号;

  • 如果此时栈不为空,并且出栈的元素不等于这个右括号;

这两种情况,都构不成有效的括号,返回false

只有到最后栈为空了,才返回true

Code Road Record