更新 0020.有效的括号.md python部分额外方法提供

补充了题主的方法,改写了原先冗余的做法,可读性提升,PEP8标准
This commit is contained in:
Eyjan_Huang
2021-08-20 02:15:03 +08:00
committed by GitHub
parent 55eb649434
commit 571defa007

View File

@ -162,18 +162,44 @@ class Solution {
Python
```python3
# 方法一,仅使用栈,更省空间
class Solution:
def isValid(self, s: str) -> bool:
stack = [] # 保存还未匹配的左括号
mapping = {")": "(", "]": "[", "}": "{"}
for i in s:
if i in "([{": # 当前是左括号,则入栈
stack.append(i)
elif stack and stack[-1] == mapping[i]: # 当前是配对的右括号则出栈
stack.pop()
else: # 不是匹配的右括号或者没有左括号与之匹配则返回false
stack = []
for item in s:
if item == '(':
stack.append(')')
elif item == '[':
stack.append(']')
elif item == '{':
stack.append('}')
elif not stack or stack[-1] != item:
return False
return stack == [] # 最后必须正好把左括号匹配完
else:
stack.pop()
return True if not stack else False
```
```python3
# 方法二,使用字典
class Solution:
def isValid(self, s: str) -> bool:
stack = []
mapping = {
'(': ')',
'[': ']',
'{': '}'
}
for item in s:
if item in mapping.keys():
stack.append(mapping[item])
elif not stack or stack[-1] != item:
return False
else:
stack.pop()
return True if not stack else False
```
Go