问题描述
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
思路
若当前字符是左括号,压入栈;
若当前字符是右括号,判断栈是否为空,不为空判断是否与栈顶括号匹配,匹配则弹出栈顶元素;
若括号有效最后栈是空。
class Solution {
public boolean isValid(String s) {
Stack<Character> stack = new Stack<>();
for(int i = 0; i < s.length(); i++){
char ch = s.charAt(i);
if(ch == '[' || ch == '(' || ch == '{'){
stack.push(ch);
}else if(stack.isEmpty()){
return false;
}else if(ch ==