---
# System prepended metadata

title: Leetcode 20. 有效括號題解

---

# Leetcode 20. 有效括號題解

## 概述
這一題要求檢查括號是否配對，如果都倆倆配對的話回傳 True，反之回傳 False。

## 解題思路
先創建雜湊表來儲存配對的字串 ()，[]，{}
一個一個掃描字串，並且使用 **棧 (Stack)** 來儲存左邊的括號，如果遇到右邊的括號，就去棧裡面查看最後一個是不是配對的左邊括號，如果不是就回傳False，如果是，就把棧中最後一個刪除，最後檢查棧是否為空，如果是空的就回傳True。

```python3=
class Solution:
    def isValid(self, s: str) -> bool:
        length = len(s)
        if length % 2 == 1:
            return False
        hash_map = {
            ")" : "(",
            "]" : "[",
            "}" : "{"
        }
        stack = []
        for cs in s: # 遍歷字串
            if cs in hash_map: # 如果是字串的右邊
                if not stack or stack[-1] != hash_map[cs]:  # 比較棧中的最後一個是不是對應的括弧
                    return False
                stack.pop()  # macth 的話就刪除
            else:  # 左邊的要先放進去
                stack.append(cs)
        return not stack  # 檢查棧是否為空
```