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

LeetCode20-ValidParentheses

时间:2023-03-26 16:26:49 Python

给定一个仅包含'(',')','{','}','[',']'的字符串,判断该字符串是否有效。给定一个仅包含字符“(”、“)”、“{”、“}”、“[”和“]”的字符串,确定输入字符串是否有效。有效字符串必须满足:左括号必须与右括号类型相同。左括号必须以正确的顺序闭合。输入字符串在以下情况下有效:左括号必须由相同类型的括号闭合。打开的括号必须以正确的顺序关闭。请注意,空字符串可以被视为有效字符串。请注意,空字符串也被视为有效。示例1:输入:"()"输出:true示例2:输入:"()[]{}"输出:true示例3:输入:"(]"输出:false示例4:输入:"([)]"输出:false例5:输入:"{[]}"输出:true解题思路:很简单的问题,将字符串的每个字符压入栈中,简单判断为是。例如:输入:"{[]}"初始栈为空,'{'压栈下一个字符栈顶元素'{'不匹配'[','['压栈下一个字符栈顶元素'['匹配']','['弹出栈顶下一个字符,'{'匹配'}','}'结束栈,栈为空,返回True关键是判断字符是否匹配,匹配的标准是对括号字符,不是同一个字符,可以用switch判断三个括号字符,或者三个if语句,也可以用哈希表映射括号关系。Java:classSolution{publicbooleanisValid(Strings){Stackstack=newStack<>();//初始化堆栈for(charb:s.toCharArray()){switch(b){case'(':{stack.push(')');休息;}case'{':{stack.push('}');休息;}case'[':{stack.push(']');休息;}default:{//如果没有匹配,返回falseif(stack.isEmpty()||stack.pop()!=b){returnfalse;}}}}returnstack.isEmpty();//栈为空则证明全部匹配,返回true,否则返回false}}Python:注意:python中没有switch...case...语句,官方用if判断代替...class解决方案:defisValid(self,s:str)->bool:stack=[]forcins:ifc=='[':stack.append(']')elifc=='(':stack.append(')')elifc=='{':stack.append('}')eliflen(stack)==0或堆栈.pop()!=c:返回False返回len(stack)==0