LeetCode 解題思路:20. Valid Parentheses(有效的括號)
題目描述 給定一個只包括 '(',')','{','}','[',']' 的字串 s,判斷字串是否有效。
有效字串需滿足:
左括號必須用相同類型的右括號閉合 左括號必須以正確的順序閉合 每個右括號都有一個對應的相同類型的左括號 範例 範例 1:
輸入:s = "()" 輸出:true範例 2:
輸入:s = "()[]{}" 輸出:true範例 3:
輸入:s = "(]" 輸出:false範例 4:
輸入:s = "([)]" 輸出:false 解釋:雖然有對應的括號,但順序不正確範例 5:
輸入:s = "{[]}" 輸出:true限制條件 1 <= s.length <= 10⁴ s 僅由括號 '()[]{}' 組成 核心概念:為什麼要用堆疊? 括號匹配的本質 觀察有效的括號序列,你會發現一個規律:最後出現的左括號,必須最先被匹配。
範例:{[()]} ↓ 遇到 { → 需要找 } 遇到 [ → 需要找 ](但要先處理) 遇到 ( → 需要找 )(但要先處理) 遇到 ) → 匹配最近的 ( 遇到 ] → 匹配最近的 [ 遇到 } → 匹配最近的 {這正是**後進先出(LIFO)**的特性,而堆疊就是為此而生!