from pythonds import Stack
def parChecker(symbolString):
s = Stack()
balanced = True #声明一个布尔变量
index = 0
while index < len(symbolString) and balanced: #len函数定下标
symbol = symbolString[index]
if symbol in "([{": #开括号压入栈,注意字符串与子串的特性
s.push(symbol)
else:
if s.isEmpty():
balanced = False
else:
top = s.pop()
if not matches(top,symbol): #将栈中待删除的顶部元素与字符串中下一个待与之匹配的右闭符号比较
balanced = False
index = index + 1
if balanced and s.isEmpty(): #python中if convention即if convention is True!!注意此行的位置,与while并列
return True
else:
return False
def matches(open,close):
opens = "([{" #开括号,待压入栈
closers = ")]}" #闭括号 待与栈匹配后一起删除
return opens.index(open) == closers.index(close) #输出的是布尔值,str1.index(str2)输出子串str2在str1中的起始位置