解题思路
利用栈,遍历所有的字符,如果为左括号,则将相对应的右括号入栈,
如果碰到右括号,
如果此时栈为空,则返回false
如果栈不为空,则将该右括号与栈弹出的栈顶的元素进行比较,如果不相等,则返回false,如果相等则continue
直到遍历所有的字符,判断栈是否为空,如果为空,则返回true,不为空返回false。
参考代码
class Solution {
public boolean isValid(String s) {
if(s.length()%2==1){
return false;
}
Stack<Character> stack=new Stack<>();
for(int i=0;i<s.length();i++){
if(s.charAt(i)=='('){
stack.push(')');
}else if(s.charAt(i)=='{'){
stack.push('}');
}else if(s.charAt(i)=='['){
stack.push(']');
}else if(s.charAt(i)==')' || s.charAt(i)=='}' || s.charAt(i)==']'){
if(stack.isEmpty()){
return false;
}
Character c=stack.pop();
if(s.charAt(i)==c){
continue;
}else{
return false;
}
}
}
if(!stack.isEmpty()){
return false;
}
return true;
}
}