20.有效的括号
给定一个只包括 '('
,')'
,'{'
,'}'
,'['
,']'
的字符串 s
,判断字符串是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
示例 1:
示例 2:
Solution:
首先考虑用栈的思想,如果遇到左括号,就入栈,碰到了右括号,就出栈,对比栈顶元素和右括号是否匹配
注意到括号都是对应的,所以可以用Map简化操作
需要的考虑的特殊情况:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| class Solution { public boolean isValid(String s) { char[] ans = s.toCharArray(); HashMap<Character, Character> map = new HashMap<>(); map.put(')', '('); map.put('}', '{'); map.put(']', '['); Deque<Character> stack = new ArrayDeque<>(); for (int i = 0; i < ans.length; i++) { if (map.containsValue(ans[i])) { stack.push(ans[i]); } else { if (stack.isEmpty() || stack.peek() != map.get(ans[i])) { return false; } stack.pop(); } } return stack.isEmpty(); } }
|