题目
链接
合法括号序列判断
思路
- 如果字符串长度是奇数,就不是合法序列,直接返回false
- 字符串长度是偶数,遍历字符串进行匹配
1. 如果是左括号,直接入栈。
2. 如果是右括号,判断栈是否为空,
1. 栈为空也直接返回false;
2. 栈不为空,弹出栈顶元素是否是左括号,是就匹配,删除栈顶元素。
4. 如果字符既不是左括号也不是右括号,返回false。
代码
import java.util.*;
public class Parenthesis {
public boolean chkParenthesis(String A, int n) {
if(A.length()==0){
return false;
}
if(A.length()%2==1){
return false;
}
Deque<Character> stack=new LinkedList<>();
for(char c:A.toCharArray()){
if(c=='('){
stack.push(c);
}else if(c==')'){
if(stack.isEmpty()){
return false;
}
if(stack.peek()=='('){
stack.pop();
}
}else{
return false;
}
}
return stack.isEmpty();
}
}