题目连接:https://leetcode-cn.com/problems/valid-parentheses/java
给定一个只包括 '('
,')'
,'{'
,'}'
,'['
,']'
的字符串,判断字符串是否有效。python
有效字符串需知足:app
注意空字符串可被认为是有效字符串。spa
示例 1:code
输入: "()" 输出: true
示例 2:leetcode
输入: "()[]{}" 输出: true
示例 3:字符串
输入: "(]" 输出: false
示例 4:get
输入: "([)]" 输出: false
示例 5:io
输入: "{[]}" 输出: true
匹配问题,咱们通常使用栈class
遍历字符串,咱们把左括号压入栈中,当遇到右括号,和栈顶元素比较!
时间复杂度:\(O(n)\)
空间复杂度:\(O(n)\)
关注个人知乎专栏,了解更多的解题技巧!
python
class Solution: def isValid(self, s: str) -> bool: stack = [] lookup = { "(":")", "[":"]", "{":"}" } for alp in s: if alp in lookup: stack.append(alp) continue if stack and lookup[stack[-1]] == alp: stack.pop() else: return False return True if not stack else False
java
class Solution { public boolean isValid(String s) { Stack<Character> stack = new Stack<Character>(); for (char alp : s.toCharArray()) { if (alp == '(') stack.push(')'); else if (alp == '[') stack.push(']'); else if (alp == '{') stack.push('}'); else if (stack.isEmpty() || stack.pop() != alp) return false; } return stack.isEmpty(); } }