1. 程式人生 > 實用技巧 >20. 有效的括號 leetcode每日一題 8.14

20. 有效的括號 leetcode每日一題 8.14

今天這道題居然是bilibili筆試的原題

連結

https://leetcode-cn.com/problems/valid-parentheses/

思路

使用一個輔助棧來存放左括號,但遇到有括號時,則棧頂元素出棧,判斷是否對應,若不對應或棧為空,則為false,最後返回棧是否為空

程式碼

class Solution {
    public boolean isValid(String s) {
        int n=s.length();
        if((n&1)==1){
            return false;
        }
        Map<Character, Character> pairs = new HashMap<Character, Character>() {{
            put(')', '(');
            put(']', '[');
            put('}', '{');
        }};
        Stack<Character> stack=new Stack<>();
        for (char ch:s.toCharArray()){
            if (pairs.containsKey(ch)) {
                if (stack.isEmpty() || stack.peek() != pairs.get(ch)) {
                    return false;
                }
                stack.pop();
            } else {
                stack.push(ch);
            }
        }
        return stack.isEmpty();
    }
}