1. 程式人生 > 其它 >如何徹底禁止 macOS Monterey 自動更新,去除更新標記和通知

如何徹底禁止 macOS Monterey 自動更新,去除更新標記和通知

有效的括號

題目

給定一個只包括 '(',')','{','}','[',']' 的字串,判斷字串是否有效。

有效字串需滿足:

左括號必須用相同型別的右括號閉合。
左括號必須以正確的順序閉合。
注意空字串可被認為是有效字串。

示例 1:

輸入: "()"
輸出: true
示例 2:

輸入: "()[]{}"
輸出: true
示例 3:

輸入: "(]"
輸出: false
示例 4:

輸入: "([)]"
輸出: false
示例 5:

輸入: "{[]}"
輸出: true

來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/valid-parentheses


著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。


解決方法

思路
  • 棧先入後出特點正好能滿足題目要求,有左括號就入棧,右括號就取棧頂左括號,判斷是否有效。
  • 通過Map鍵值對建立左右括號對應關係。
演算法
  • 如果是左括號,就入棧 push
  • 以外就取出棧頂的左括號 pop,通過取出的左括號為key在Map中找到對應的value,與當前括號比較。


class Solution{
    private HashMap<Character,Character> mappings;
    
    public Solution(){
        this.mappings = new HashMap<Character,Character>();
        this.mappings.put('(', ')');
        this.mappings.put('[', ']');
        this.mappings.put('{', '}');
    }

    public boolean isValid(String s) {
        Stack<Character> stack = new Stack<Character>();
        for (Character c : s.toCharArray()) {
            if (mappings.containsKey(c)) {
                stack.push(c);
            } else {
                char top = stack.empty() ? '#' : stack.pop();
                if (c != mappings.get(top)) {
                    return false;
                }
            }
        }
        return stack.isEmpty();
    }
}