题目
算法思想:左括号入栈,右括号去匹配栈顶元素,不匹配则表示出错,最后结束的时候判断栈是否为空,表示是否全部匹配完,java需要注意栈空异常。
代码
public boolean isValid(String s) {
Stack<Character> stack = new Stack<>();
for(int i = 0;i < s.length();i++) {
char c = s.charAt(i);
if(c == '(' || c == '[' || c == '{') {
stack.push(c);
}
else if(stack.empty()){
return false;
}
else if( (c == ')' && stack.peek() != '(') || (c == ']' && stack.peek() != '[') || (c == '}' && stack.peek() != '{') ){
return false;
}
else{
stack.pop();
}
}
if(stack.empty()){
return true;
}
return false;
}