题目:
给定一个只包括 '('
,')'
,'{'
,'}'
,'['
,']'
的字符串,判断字符串是否有效。
括号必须以正确的顺序关闭,"()"
和 "()[]{}"
是有效的但是 "(]"
和 "([)]"
不是。
python代码1:
class Solution:
def isValid(self, s):
pars = [None]
parmap = {')':'(',']':'[','}':'{'}
for i in s:
if i in parmap and parmap[i] == pars[len(pars)-1]:
pars.pop()
else:
pars.append(i)
return len(pars) == 1
python代码2:
class Solution(object):
def isValid(self, s):
pars = [None]
parmap = {')': '(', '}': '{', ']': '['}
for c in s:
if c in parmap:
if parmap[c] != pars.pop():
return False
else:
pars.append(c)
return len(pars) == 1
心得:这道题没想到有这样的解法,自己的解法还是太笨拙了,方法二是方法一的延伸。如果正要入栈的是右括号,而栈顶元素不是能与之消去的相应左括号,那么该输入字符串一定是无效的。于是,可以加快判断过程。
版权声明:本文为博主原创文章,未经允许不得转载。https://blog.csdn.net/cuicheng01/article/details/79856646