Valid Parentheses
Question
Given a string containing just the characters '('
, ')'
, '{'
, '}'
, '['
and ']'
, determine if the input string is valid.
The brackets must close in the correct order, "()"
and "()[]{}"
are all valid but "(]"
and "([)]"
are not.
Answer
solution:
class Solution(object):
def isValid(self, s):
"""
:type s: str
:rtype: bool
"""
stack, lookup = [], {"(": ")", "{": "}", "[": "]"}
for parenthese in s:
if parenthese in lookup:
stack.append(parenthese)
elif len(stack) == 0 or lookup[stack.pop()] != parenthese: #用lookup[stack.pop()]来判断前一个符号对应的结尾符号是否与当前符号一致
return False
return len(stack) == 0
Knowledge:
这道题目是string系列的第一题,拿到后其实是懵掉了。后来网上查了后才知道这是一道经典的利用栈判定括号匹配的问题,说明还需要不断累计类似题目,遇到不会的,就要去查询,看是否能够总结成一类题型。
利用栈判定括号匹配:从左向右遍历字符串,若为左括号则压入栈(append),若为右括号则将栈顶元素与该括号进行匹配,若匹配则将该左括号出栈,若不匹配则直接返回假,遍历完成后如果栈为空则为正确括号序列,否则为不匹配括号序列。
pop()函数用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值,语法为
list.pop(obj=list[-1])
示例为:
aList = [123, 'xyz', 'zara', 'abc'] print "A List : ", aList.pop() print "B List : ", aList.pop(2) #输出如下,可以用索引指定弹出哪一个 A List : abc B List : zara
Last updated
Was this helpful?