所以我已经在 Leetcode 上解决了几次Valid Parentheses,以解决空格重复问题。我现在完全明白了堆栈解决方案,但我不明白的是如何产生帮助您意识到需要堆栈数据结构的直觉。最初的几次尝试我尝试了一种奇怪的两指针方法,我完全理解为什么它不起作用。问题的哪些部分提示您需要使用堆栈?
匹配支架需要确保不同类型的支架正确嵌套。例如
([])
已正确平衡,但是
(])[
不是。
所以你不能只使用计数器作为左括号和右括号,你需要跟踪相对顺序。右括号的顺序必须与相应左括号的顺序相反。
堆栈的后进/先出性质使其非常适合处理大多数类型的嵌套或分层数据。左括号对应于推送操作,而右括号对应于弹出操作,您可以检查您弹出的左括号是否与您在迭代期间正在处理的右括号相匹配。