有效括号问题
题目:有效括号问题
给定一个只包括 '('
,')'
,'{'
,'}'
,'['
,']'
的字符串,判断字符串是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
解题思路:
1)首先需要注意空字符串算作有效
2)栈的特点先进后出,譬如字符串“([{}])”,判断流程:step1:循环遍历字符串,碰到左括号"("或者“[”或者“{”存入空栈S;step2:碰到右括号")"或者“]”或者“}“,则将S的栈顶元素取出 ,看两者是否匹配;不匹配则无效,匹配则继续
代码:
方案一:栈
class Solution(object):
def isValid(self, s):
"""
:type s: str
:rtype: bool
"""
stack = []
x = ['(','[','{']
y = [')',']','}']
z = ['()','[]','{}']
if s.strip()=='':
return True
else:
for i in s:
if i in x :
stack.append(i)
if i in y:
if stack == []:
return False
else:
pop_item = stack.pop()
sz = pop_item + i
if sz not in z:
return False
return True