题目来源:https://leetcode-cn.com/problems/valid-parentheses/python
给定一个只包括 '(',')','{','}','[',']'
的字符串,判断字符串是否有效。segmentfault
有效字符串需知足:微信
注意空字符串可被认为是有效字符串。app
示例 1:spa
输入: "()" 输出: true
示例 2:code
输入: "()[]{}" 输出: true
示例 3:blog
输入: "(]" 输出: false
示例 4:leetcode
输入: "([)]" 输出: false
示例 5:字符串
输入: "{[]}" 输出: true
class Solution: def isValid(self, s: str) -> bool: '''判断是不是有效的括号 Args: str: 包含括号的字符串 Returns: 返回判断的结果,知足条件: 1. 左括号必须用相同的类型的右括号闭合。 2. 左括号必须以正确的顺序闭合。 空字符串能够被认为是有效的字符串 返回类型为布尔型 ''' # 以栈形式存储左括号 stack = [] # 以右括号当成键映射对应类型的左括号 prths_mapping = {'}': '{', ']': '[', ')': '('} # 遍历字符串,遇左括号则进行入栈 for ch in s: # 对字符进行判断,是否为右括号 if ch in prths_mapping: # 为右括号的状况下,判断 stack 栈顶是不是同类型的左括号 # pop 出栈顶的字符 # 若 stack 为空,用 '?' 进行标记 pop_prth = stack.pop() if stack else '?' # 若是左右括号不成对,直接返回 False if prths_mapping[ch] != pop_prth: return False else: # 左括号入栈 stack.append(ch) # stack 最终为空,则表示为有效 return not stack
以上就是本篇的主要内容get
欢迎关注微信公众号《书集所录》