驗證大小中括號是否成對閉合匹配
Valid Parentheses
- 驗證大小中括號是否成對閉合匹配。
- Given a string containing just the characters ‘(‘, ‘)’, ‘{‘, ‘}’, ‘[’ and ‘]’, determine if the input string is valid.
- The brackets must close in the correct order, “()” and “()[]{}” are all valid but “(]” and “([)]” are not..
example 1
input: '{{()}}'
output: True
example 2
input: '(([)])'
output: False
example 3
input: ''
output: True
思路
- 使用棧(先進後出)
- 如果遇到左邊符號
{
,[
,(
,則將其對應的右邊符號}
,]
,)
入棧,如果遇到右邊符號,則判斷棧頂元素是否匹配,不匹配則返回False - 最後棧空,則完全閉合匹配,返回True
代碼
class Solution(object):
def isValid(self, s):
"""
:type s: str
:rtype: bool
"""
brackets = {
'(': ')',
'[': ']',
'{': '}'
}
stack = []
for i in s:
if i in brackets:
stack.append(brackets[i])
elif i in brackets.values():
if len(stack) == 0 or stack.pop(-1) != i:
return False
return len(stack) == 0
本題以及其它leetcode題目代碼github地址: github地址