题目
解题思路
代码:
import java.util.Stack;
public class test {
public boolean isValid (String s)
{
Stack<Character> stack = new Stack<>();
//将字符串转换为数组形式,方便操作
char [] chars = s.toCharArray();
//遍历所有元素
for(char c:chars){
//如果是左括号,就把他们对应的右括号压栈
if(c == '('){
stack.push(')');
}
else if (c == '{')
{
stack.push('}');
}
else if(c == '[')
{
stack.push(']');
}
else if(stack.isEmpty()|| stack.pop()!=c)
{
/* 否则就只能是右括号
1:如果栈为空,说明括号无法匹配
2:如果栈不为空,栈顶元素就要出栈,和这个右括号比较
3:如果栈顶元素不等于这个右括号,说明无法匹配,直接返回 false
4:最后如果栈为空,说明完全匹配,是有效的括号,否则不完全匹配,就不是有效的括号*/
return false;
}
}
return stack.isEmpty();
}
}
ps:以上思路参考自 LeetCode用户:数据结构与算法