题目描述:
https://leetcode-cn.com/problems/valid-parentheses/
题解1:字符串替换
参考:https://www.jianshu.com/p/75a4686f0d9b
找出输入字符串s中所有'()' '[]' '{}'组合并替换为'',判断完成替换后的字符串是否为空
def isValid(self,s): lens = len(s) while '()' in s or '[]' in s or '{}' in s: s = s.replace('()','') s = s.replace('[]','') s = s.replace('{}','') if s=='': return True else: return False
题解2:栈
https://blog.csdn.net/qq_17550379/article/details/80723003
1.map match保存括号组合的对应。
2.初始化一个栈stack
3.对输入s进行遍历
<1>将读取到的每个左括号入栈
<2>如果读取到右括号:首先判断stack是否为空,若为空,说明没有可对应的左括号返回false。若不为空,弹出stack最上面的元素,判断当前读取到的右括号是否与栈顶元素匹配
4.遍历结束 判断stack是否为空,不为空则说明存在未找到对应有括号的左括号,返回false。
def isValid(self, s): match = {'{':'}','(':')','[':']'} stack = [] for sym in s: if sym=='[' or sym=='(' or sym=='{': stack.append(sym) else: if len(stack)==0: return False left = stack.pop() if match[left] != sym: return False if len(stack)==0: return True else: return False