20. 有效的括号
题目描述
给定一个只包括 ‘(‘,’)’,’{‘,’}’,’[‘,’]’ 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
输入输出
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| 输入:s = "()" 输出:true
输入:s = "()[]{}" 输出:true
输入:s = "(]" 输出:false
输入:s = "([)]" 输出:false
输入:s = "{[]}" 输出:true
|
基本思路
用栈push和pop就完事儿了
java实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| class Solution { public boolean isValid(String s) { if(s.isEmpty()){ return true; } Stack<Character> stack = new Stack<Character>(); for(char c:s.toCharArray()){ if(c == '(') stack.push(')'); else if(c == '[') stack.push(']'); else if(c == '{') stack.push('}'); else if(stack.isEmpty() || c != stack.pop()){ return false; } } return stack.isEmpty(); } }
|