-
题目:给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。有效字符串需满足:
1.左括号必须用相同类型的右括号闭合。
2.左括号必须以正确的顺序闭合。1 -
示例:
# 示例 1
输入:s = "()"
输出:true
# 示例 2
输入:s = "()[]{}"
输出:true
# 示例 3
输入:s = "(]"
输出:false
# 示例 4
输入:s = "([)]"
输出:false
# 示例 5
输入:s = "{[]}"
输出:true
- 解法:
class Solution(object):
def isValid(self, s):
"""
:type s: str
:rtype: bool
"""
# 首先判断该括号内容是否为奇数,若为奇数则返回错误
if len(s) % 2 == 1:
return False
# 定义括号
pairs = {
")": "(",
"]": "[",
"}": "{",
}
# 定义栈
stack = list()
# 遍历括号
for ch in s:
# 如果括号在键值对的键中,则匹配括号并删除栈中元素
# 如果不在则将元素压入栈
if ch in pairs:
# 如果该括号不在栈中或者栈中最后一个括号与ch字典的值不匹配,返回错误
if not stack or stack[-1] != pairs[ch]:
return False
# 删除元素
stack.pop()
else:
stack.append(ch)
# 没有栈为真,有栈为假
return not stack
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/valid-parentheses
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 ↩︎