题目分析
1.如果当前字符为左括号({ [,就把当前字符入栈
2.如果当前字符为右括号,取出栈顶元素,看看栈顶元素和括号类型是否匹配
a)如果匹配,就把栈顶元素出栈,继续取下一个字符
b)如果类型不匹配,就说明非法
3.遍历完整个字符串之后,看栈中的内容是否为空,如果为空就为合法的
代码
```java
public class TestDemo21_1 {
public boolean isValid(String s) {
//1.先创建一个栈
Stack<Character> stack = new Stack<>();
//2.循环遍历每个字符
for (int i = 0; i < s.length(); i++){
char c = s.charAt(i);
//3.判断c是否是左括号
if (c == '(' || c == '{' || c == '['){
stack.push(c);//bac入栈
continue;//进入下一个循环去除下一个字符
}
if (stack.empty()){
//如果为空
return false;
}
//4.取栈顶元素
char top = stack.pop();
if (top == '(' && c == ')'){
continue;
}
if (top == '{' && c == '}'){
continue;
}
if (top == '[' && c == ']'){
continue;
}
return false;
}
if (stack.empty()){
return true;
}
return false;
}
}