今天解的題目是第二十題valid parentheses ,這題的題目要求是判斷一個只包含括號字元的字串是否為有效括號。字串中可能出現三種類型的括號小括號 、中括號和大括號。所謂有效有三個條件。第一,每一個右括號必須有對應的左括號。第二,括號的類型必須匹配。第三,括號的出現順序必須正確,也就是說不能出現像 ([)] 這樣交錯錯誤的情況。如果括號符合規定或是空字串就回傳true ,如果不符合就回傳false 。程式邏輯的核心是利用堆疊來模擬括號的配對過程:首先建立一個hash 表將每個右括號映射到對應的左括號(如 ")": "(" ),然後初始化一個空堆疊來儲存待配對的左括號。接著逐一遍歷字符串中的每個字符,當遇到左括號時直接壓入堆疊等待後續配對;當遇到右括號時則進行配對檢查先檢查堆疊是否為空,再從堆疊頂部彈出最近的左括號,然後比對這個左括號是否與當前右括號的類型匹配,如果任一檢查失敗就立即返回 False。當字符串全部處理完畢後,最終檢查堆疊是否為空:若堆疊為空表示所有括號都完美配對返回 True,若堆疊中仍有元素則表示存在未配對的左括號返回 False。