跳转至

Leetcode Hot100 子串

[20.有效的括号]https://leetcode.cn/problems/valid-parentheses/description/?envType=study-plan-v2&envId=top-100-liked

class Solution {
    public boolean isValid(String s) {
        // 如果字符串长度为奇数,不可能匹配成功
        if (s.length() % 2 != 0) return false;

        // 使用字符数组模拟栈
        char[] stack = new char[s.length()];
        int top = -1;

        for (char c : s.toCharArray()) {
            // 左括号直接入栈
            if (c == '(' || c == '[' || c == '{') {
                stack[++top] = c;
            } else {
                // 栈为空且先进来的是右括号时,直接返回false
                if (top == -1) return false;

                // switch语句比HashMap查找更快
                if ((c == ')' && stack[top] != '(') || 
                    (c == ']' && stack[top] != '[') || 
                    (c == '}' && stack[top] != '{')) {
                    return false;
                }

                // 匹配成功,使用数组下标移动模拟弹出栈顶元素
                top--;
            }
        }

        // 下标移动到初始==栈清空==所有括号都匹配成功
        return top == -1;
    }
}

评论