题目:
给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/valid-parentheses
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题思路
本题考察栈的使用:
- 遍历字符串
- 将左括号压栈;
- 碰到右括号如果和队尾的左括号匹配则出栈,如果不匹配或者栈空则返回False。
- 遍历结束,栈空返回True,否则False。
Tricks:
- 在栈中先保存一个None,防止使用pop函数的时候出现异常。
- 使用dict保存括号的匹配,可以减少代码量。
class Solution:
def isValid(self, s: str) -> bool:
array = [None]
pardic = {
'}': '{',
']': '[',
')': '('
}
for c in s:
if c in pardic:
if pardic[c] != array.pop():
return False
else:
array.append(c)
return len(array) == 1
网友评论