有效的括号
给定一个只包括 '('
,')'
,'{'
,'}'
,'['
,']'
的字符串,判断字符串是否有效。
有效字符串需满足:
-
左括号必须用相同类型的右括号闭合。
-
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
示例 1:
输入: "()" 输出: true
示例 2:
输入: "()[]{}" 输出: true
示例 3:
输入: "(]" 输出: false
示例 4:
输入: "([)]" 输出: false
示例 5:
输入: "{[]}" 输出: true
我的思路
思路一
新建一个栈,将左括号都压进栈,看到右括号的时候弹栈,并判断是否为一对。
结尾的时候应该加入一个空栈判断,避免左括号比右括号多的情况。
class Solution { public boolean isValid(String s) { char[] chars = s.toCharArray(); Stack<Character> stack = new Stack<>(); for(char c : chars){ switch (c){ case '{': stack.push(c); break; case '[': stack.push(c); break; case '(': stack.push(c); break; case '}': if(stack.empty()||stack.pop()!='{') return false; break; case ']': if(stack.empty()||stack.pop()!='[') return false; break; case ')': if(stack.empty()||stack.pop()!='(') return false; break; default: break; } } return stack.empty(); } }