题目描述:
给定一个只包括 ‘(‘,‘)‘,‘{‘,‘}‘,‘[‘,‘]‘ 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
涉及内容:栈
字符串
示例:
输入:s = "()"
输出:true
输入:s = "(]"
输出:false
输入:s = "{[]}"
输出:true
思路:
首先判断为空情况,此时若为真则直接返回true
初始化一个空栈
然后遍历输入的字符串,对于输入的左边字符的话(即 ‘(‘ ‘[‘ ‘{‘ 这三个字符 )则直接将读入的字符存入栈中。若读入的字符是右边字符的话(‘)‘ ‘]‘ ‘}‘)先检查是否为空栈,若为空则输出false。不是空的话则将栈顶元素弹出,检查是否为匹配元素。若是匹配的元素则删除栈顶元素并继续遍历,若不匹配,则直接返回false
最后遍历完所有元素之后检查栈是否为空,若为空则输出true否则的话说明栈内存在未匹配的元素,输出false
提交结果:
完整代码:
class Solution:
def isValid(self, s: str) -> bool:
if len(s)==0:
return True
stack=[]
for c in s:
if c==‘(‘ or c==‘[‘ or c==‘{‘:
stack.append(c)
else:
if len(stack)==0:
return False
else:
temp=stack.pop()
if c==‘)‘:
if temp!=‘(‘:
return False
elif c==‘]‘:
if temp!=‘[‘:
return False
elif c==‘}‘:
if temp!=‘{‘:
return False
return True if len(stack)==0 else False
原文:https://www.cnblogs.com/leohbz/p/14648824.html