题目链接:有效的括号
分析:
这里需要使用栈来进行操作
括号共分为三种:( )、{ }、[ ]
若要进行括号匹配,只需要把左括号全部压入栈中,再用右括号进行匹配( 遇到左括号压入栈,遇到右括号去进行判断匹配 )
栈中的元素不停的弹出,然后和右边的括号进行匹配
例如:栈中的元素是这样:( { [ 此时的栈顶元素应该是 [,后面的括号用来和弹出的栈顶元素 [ 进行匹配
若匹配成功,则再次弹出元素,若匹配不成功,直接返回false
等到最后(此时还未弹出false,表示之前的括号都匹配成功),如果循环结束,栈中没有元素则表示全部匹配成功
代码实现:
public class ValidParentheses {
public static boolean isValid(String s) {
//1、申明一个stack
Stack<Character> stack = new Stack<Character>();
//遍历 s String本质上是char[]
for(int i = 0 ; i < s.length(); i++){
char c = s.charAt(i);
if(c == '{' || c == '[' || c == '('){
//如果是{ [ ( 压入栈中
stack.push(c);
}else{
// } ] ) 进行比对
// 判断此时栈是否为空
if(stack.isEmpty()){
return false;
}
char topChar = stack.pop();
if(c == ']' && topChar != '['){
return false;
}
if(c == '}' && topChar != '{'){
return false;
}
if(c == ')' && topChar != '('){
return false;
}
}
}
//如果循环结束,栈中没有元素则表示全部匹配成功
return stack.isEmpty();
}
public static void main(String[] args) {
System.out.println(isValid("(){}"));
}
}