LeetCode-20 Valid Parentheses
本文最后更新于:1 年前
题目描述
给定一个只包括 ‘(‘,’)’,’{‘,’}’,’[‘,’]’ 的字符串,判断字符串是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
示例
示例 1:
输入: “()”
输出: true
示例 2:
输入: “()[]{}”
输出: true
示例 3:
输入: “(]”
输出: false
示例 4:
输入: “([)]”
输出: false
示例 5:
输入: “{[]}”
输出: true
思路
这道题主要考核怎么去匹配括号我们需要匹配的括号共三种'()' '[]' '{}'
以及他们组合在一起的情况。如果元素是任意左括号就将其压入栈中,反之元素则为任意右括号,这个时候有几种情况
情况 | 说明 |
---|---|
空栈 | 栈中无元素,此时却是右括号显然是没有匹配项的 |
‘)’ | 栈顶不为’(‘,给出的示例 4 告诉我们必须在左括号后立即有与之匹配的右括号才合法 |
‘]’ | 同’)’ |
‘}’ | 同’)’ |
剩下一种便是括号匹配,此时我们就需要将栈顶元素弹出,继续判断下一个元素。最后判断一下栈中是否还剩余有元素,如果有则有括号没有匹配上。
 只需遍历字符串所以时间复杂度为 O(n),需要一个栈,最坏情况需要将整个字符串放到栈中(如全是左括号)故空间复杂度也为 O(n)
代码
1 |
|
LeetCode-20 Valid Parentheses
https://trickyrat.github.io/2020/04/09/LeetCode-20/