当前位置: 首页 > 后端技术 > Python

LeetCodeValidParentheses

时间:2023-03-26 18:29:39 Python

ValidParenthesesTopic来源:https://leetcode-cn.com/problems/valid-parentheses/Topic给定一个只包含'(',')','{','}','[',']'的字符串,判断字符串是否有效。一个有效的字符串需要满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。请注意,空字符串被视为有效字符串。示例1:输入:"()"输出:true示例2:输入:"()[]{}"输出:true示例3:输入:"(]"输出:false示例4:输入:"([)]"输出:false例5:输入:"{[]}"输出:true解题思路:栈;映射括号,右括号为键,左括号为值;如果遇到左括号,直接入栈,等待后续的匹配处理;如果遇到右括号,则检查栈顶元素,如果是同一类型则弹出,继续处理下一部分,否则直接返回False;如果最终遍历完成后栈中还有元素,同样返回False代码实现classSolution:defisValid(self,s:str)->bool:'''判断是否有效parenthesisArgs:str:包含括号的字符串Returns:返回判断结果满足条件:1.左括号必须与同类型的右括号2.左括号必须以正确的顺序闭合。空字符串可以被视为有效字符串。返回类型为Boolean'''#以栈的形式存储左括号stack=[]#以右括号为key映射对应类型的左括号prths_mapping={'}':'{',']':'[',')':'('}#遍历字符串,遇到左括号则入栈forchins:#判断字符是否为右括号ifchinprths_mapping:#为右括号时,判断栈顶是否为左括号同类型#pop弹出栈顶字符#如果栈为空,则用'?'标记pop_prth=stack.pop()ifstackelse'?'#如果左右括号不成对,直接返回Falseifprths_mapping[ch]!=pop_prth:returnFalseelse:#左括号入栈效果上面是本文主要内容。欢迎关注微信公众号《书所集录》