LeetCode 20 - Valid Parentheses
題目
題目連結:https://leetcode.com/problems/valid-parentheses/
給定一個包含只包含 '('
、')'
、'{'
、'}'
、'['
、']'
的字串,問給定的字串是不是一個合法的括號字串。
範例說明
Example 1:
1 | Input: s = "()" |
Example 2:
1 | Input: s = "()[]{}" |
Example 3:
1 | Input: s = "(]" |
Example 4:
1 | Input: s = "([)]" |
Example 5:
1 | Input: s = "{[]}" |
想法&實作細節
由左到右,任一個右括號只能與已經出現的左括號匹配,且他們之間不能有其他還未匹配的括號。
且一個右括號如果當下沒有辦法被匹配的話,代表字串是不合法的,因為接下來再也沒有可以匹配這個右括號的選擇了。
由左到右,將未使用的左括號依序推入 stack
內,當右括號出現時,其只能匹配 stack
的頂端元素。若有 stack
的頂端元素與其匹配,則將左括號從 stack
中移除。否則字串不合法,回傳 false
。
最後不要忘記一個合法的括號字串,所有的左括號都應有匹配,因此最後 stack
內的元素應該為空。
程式碼
1 | class Solution { |