1.问题描述
验证一串括号序列是否合法,比如 “()” 合法,“()())(” 不合法
2.解决方案
解法一:使用栈
boolean judge_stack(String str){
Stack<Character> stack = new Stack<>();
for (int i = 0; i <str.length() ; i++) {
Character character=str.charAt(i);
if(character=='('){
stack.push(character);
}else{
if(stack.empty()==true) return false;
else stack.pop();
}
}
if(stack.empty()==true) return true;
else return false;
}
解法二:计数法
boolean judge_balance(String str){
int balance=0;
for (int i = 0; i < str.length(); i++) {
if(str.charAt(i)=='(') balance++;
else balance--;
if(balance<0) return false;
}
if(balance>0) return false;
else return true;
}