给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
- 注意空字符串可被认为是有效字符串。
示例 1:
输入: "()"
输出: true
示例 2:
输入: "()[]{}"
输出: true
示例 3:
输入: "(]"
输出: false
示例 4:
输入: "([)]"
输出: false
示例 5:
```python
输入: "{[]}"
输出: true
判断字符串中给关于括号的有效性,使用栈保存左括号,如果入栈的是右括号,则将其和栈顶元素进行比较:
- 如果两者不匹配,直接放回False
- 否则栈顶元素出栈,右括号不入栈
- 最后判断栈是否为空
class Solution(object):
def isValid(self, s):
stack = []
d = {")": "(", "}": "{", "]": "["}
for i in s:
if i == '(' or i == '{' or i == '[':
stack.append(i)
else:
# 如果是右括号则判断当前栈顶元素是否是对应的左括号
# 如果是则弹出栈顶元素,同时右括号不入栈
# 否则直接返回False
if stack and d[i] == stack[-1]:
stack.pop()
else:
return False
return stack == []