栈
题目源于leetcode20.Valid Parentheses(有效的括号)
题目描述:
由于只包含字符的字符串’(’,’)’,’{’,’}’,’[‘和’]’,确定输入字符串是有效的。
如果输入字符串有效:
1.必须使用相同类型的括号关闭左括号。
2.必须以正确的顺序关闭打开括号。
请注意,空字符串也被视为有效。
解题思路:
1.利用栈后进先出的性质来进行判断
2.首先括号必须是成对出现,如果不是则返回False
3.如果栈是空的,则将字符串添加进栈中
4.再依次判断给出的字符中的元素与栈顶元素是否配对,是则弹出栈顶元素,否则添加,依次进行判断
5.如果输入的不是括号字符,则返回FALSE
6.如果退出循环后,栈中所有元素都配对并弹出,最后剩空栈,则返回TRUE,说明都是配对的
Python实现:
class Solution(object):
def isValid(self, s):
"""
:type s: str
:rtype: bool
"""
stack=[]
length=len(s)
if (length%2):
return False
for i in s:
if not stack:
stack.append(i)
continue
top=stack[-1]
if top=='(':
if i==')':
stack.pop()
else:
stack.append(i)
elif top=='{':
if i=='}':
stack.pop()
else:
stack.append(i)
elif top=='[':
if i==']':
stack.pop()
else:
stack.append(i)
else:
return False
if not stack:
return True
else:
return False