【LeetCode】 20.有效的括號

wilson_m發表於2020-09-24

題目描述
       給定一個只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字串,判斷字串是否有效。

有效字串需滿足:

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

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

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

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

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

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

題目連結有效的括號

題目標籤 字串

思路解析

使用棧資料結構,遍歷輸入字串

如果當前字元為左半邊括號時,則將其壓入棧中

如果遇到右半邊括號時,分類討論:

  • 如棧不為空且為對應的左半邊括號,則取出棧頂元素,繼續迴圈

  • 若此時棧為空,則直接返回 false

  • 若不為對應的左半邊括號,反之返回 false

Java題解

public boolean isValid(String s) {
        Stack<Character> stack = new Stack<>();
        for (char c : s.toCharArray()) {
            if (c == '(') {
                stack.push(')');
            } else if (c == '[') {
                stack.push(']');
            } else if (c == '{') {
                stack.push('}');
            } else if (stack.isEmpty() || stack.pop() != c) {
                return false;
            }
        }
        return stack.isEmpty();
    }

相關文章