categories: [Blog,Algorithm]
20. 有效的括号
难度简单2197
给定一个只包括 '(',')','{','}','[',']' 的字符串 s,判断字符串是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
示例 1:
输入:s = “()”
输出:true
示例 2:
输入:s = “()[]{}”
输出:true
示例 3:
输入:s = “(]”
输出:false
示例 4:
输入:s = “([)]”
输出:false
示例 5:
输入:s = “{[]}”
输出:true
提示:
1 <= s.length <= 10s仅由括号'()[]{}'组成。
class Solution {public boolean isValid(String s) {int n = s.length();if (n % 2 == 1) {return false;}Map<Character, Character> pairs = new HashMap<Character, Character>() {{put(')', '(');put(']', '[');put('}', '{');}};//Deque<Character> stack = new LinkedList<Character>();Stack<Character> stack = new Stack();//这两个都可以okfor (int i = 0; i < n; i++) {char ch = s.charAt(i);if (pairs.containsKey(ch)) {//🈶️又括号,栈就不能为空(必须有左扩号)。if (stack.isEmpty() || stack.peek() != pairs.get(ch)) {return false;}stack.pop();} else {stack.push(ch);}}return stack.isEmpty();}}
