lintcode 有效的括号序列
Posted Criya
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了lintcode 有效的括号序列相关的知识,希望对你有一定的参考价值。
题目要求
给定一个字符串所表示的括号序列,包含以下字符: ‘(‘, ‘)‘
, ‘{‘
, ‘}‘
, ‘[‘
and ‘]‘
, 判定是否是有效的括号序列。
样例
括号必须依照 "()"
顺序表示, "()[]{}"
是有效的括号,但 "([)]"
则是无效的括号。
分析
栈的简单应用,遍历字符串,遇到左括号push,遇到右括号就pop判断匹配,这里利用python的字典来方便匹配。还需要考虑到字符串已经遍历完但是栈里面元素是否有无的情况。用python写注意缩进,第一次直接在lintcode网站上写没有按照PEP8规范,搞得我WA了半天,后来直接拖出去sublime写再复制回去就好了。
class Solution: """ @param: s: A string @return: whether the string is a valid parentheses """ def isValidParentheses(self, s): # write your code here stack = [] book = { ‘}‘: ‘{‘, ‘]‘: ‘[‘, ‘)‘: ‘(‘, } list = [‘(‘, ‘{‘, ‘[‘] for i in s: if i in list: stack.append(i) else: if len(stack) == 0: return False p = stack.pop() if p != book[i]: return False if len(stack) == 0: return True else: return False
以上是关于lintcode 有效的括号序列的主要内容,如果未能解决你的问题,请参考以下文章