题目描述
有效的括号
给定一个只包括 ‘(‘,’)’,’{‘,’}’,’[‘,’]’ 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
示例 1:
示例 2:
1 2 3
| 输入:s = "()[]{}" 输出:true
|
示例 3:
示例 4:
示例 5:
解法
- 栈,模式匹配
- 每次遇到左括号我们就存入栈
- 遇到右括号就与栈顶元素相互匹配,看是否符合规则
- 最后查看栈的元素是否为空
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
| class Solution { public boolean isValid(String s) { if(s.length()%2==1){ return false; } Stack<Character> stack=new Stack<>(); char[] elements=s.toCharArray(); for (int i = 0; i < elements.length; i++) { if (elements[i]=='('){ stack.push(')'); } else if(elements[i]=='['){ stack.push(']'); } else if (elements[i]=='{'){ stack.push('}'); } else if (stack.isEmpty()||stack.pop()!=elements[i]){ return false; } } return stack.isEmpty(); } }
|
来源:力扣(LeetCode)
链接:20. 有效的括号 - 力扣(LeetCode) (leetcode-cn.com)