这里使用字典键作为开括号,值作为结束符括号。怎么做它真的在堆栈中工作吗?你知道吗
class py_solution:
def is_valid_parenthese(self, str1):
stack=[]
pchar = {"(": ")", "{": "}", "[": "]"}
for parenthese in str1:
if parenthese in pchar:
stack.append(parenthese)
elif len(stack) == 0 or pchar[stack.pop()] != parenthese:
return False
return len(stack) == 0
st=raw_input("Enter string of parenthesis")
print(py_solution().is_valid_parenthese(st))
通常,表达式的解析器是使用递归函数实现的,因此函数将递归地调用自身或其他函数来解析子表达式、获取其结果并构建子表达式的复合表达式,而不是循环(如您或Patrick的示例中所示)。你知道吗
然后,您的代码不会显式地处理堆栈,而是使用常规执行堆栈来实现这一点。你知道吗
看看这个实现:
此函数返回给定括号表达式及其无法分析的部分的抽象语法树(AST)。对于
'(((()[]{})))'
这样的输入,它将返回Parens(Parens(Parens(Parens(), Brackets(), Braces())))
(以及空字符串,因为它可以解析所有内容)。对于像'(((()[]{)))'
这样的错误输入,它将引发一个异常,抱怨不好的rest')))'
不再可解析。你知道吗如果输入是'{}',它会将'{'推到'If'条件下进行堆栈,然后副词是'{',它不在字典中爸爸。实际上值将为pop出去。那个poped值与当前参数'{'。Accordinglt false和true返回。你知道吗
相关问题 更多 >
编程相关推荐