
题目描述
20. 有效的括号
给定一个只包括 '('
,')'
,'{'
,'}'
,'['
,']'
的字符串 s
,判断字符串是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
- 每个右括号都有一个对应的相同类型的左括号。
示例 1:
示例 2:
示例 3:
提示:
1 <= s.length <= 104
s
仅由括号 '()[]{}'
组成
解题思路
使用栈实现
代码实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| public class Solution20Case2 { public boolean isValid(String s) { char[] chs = s.toCharArray(); Stack<Character> stack = new Stack<>(); for (char ch : chs) { if (ch == '(' || ch == '[' || ch == '{') { stack.push(ch); } else { if (stack.isEmpty()) return false; Character target = stack.pop(); if ((ch == ')' && target != '(') || (ch == ']' && target != '[') || (ch == '}' && target != '{')) { return false; } } } return stack.isEmpty(); } }
|