且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

有没有更好的方法来编写 Java 代码来检测字符串中的有效括号?

更新时间:2022-11-11 10:12:48

这似乎工作正常:

public boolean isValid(String s) {
    int n = s.length();
    if (n == 0) return true;
    if (n % 2 == 1) return false;

    Stack<Character> st = new Stack<>();
    for (char c : s.toCharArray()) {
        if (c == '{' || c == '[' || c == '(') {
            st.push(c);
        } else if (st.isEmpty()) { // no opening bracket stored
            return false;
        } else {

            char prev = st.pop();
            switch(c) { // matching open and close bracket
                case '}': if (prev != '{') return false; else break;
                case ']': if (prev != '[') return false; else break;
                case ')': if (prev != '(') return false; else break;
            }
        }
    }
    return st.isEmpty(); // stack must be empty in the end - all pairs matched
}