题目:
思路:利用栈内存先进后出的特性,我们定义一个栈stack,将字符串转换成字符数组,遍历字符数组,如果等于([{中的一个,则压入栈空间,等于)]}中的一个,则与栈顶做比较,匹配时移除栈顶元素,不匹配则返回false,最后判断栈是否为空即可。
实现:
class Solution {
public boolean isValid(String s) {
Stack<Character> stack =new Stack<>();
char[] chs=s.toCharArray() ;
for(int i=0;i<s.length();i++){
if(chs[i]=='('||chs[i]=='['||chs[i]=='{'){
stack.push(chs[i]);
}else{
if(chs[i]==']'&& !stack.isEmpty()&&stack.peek()=='['){
stack.pop();
} if(chs[i]==')'&& !stack.isEmpty()&&stack.peek()=='('){
stack.pop();
} if(chs[i]=='}'&& !stack.isEmpty()&&stack.peek()=='{'){
stack.pop();
}
}
}
return stack.isEmpty();
}
}
运行情况: