题目描述
对于一个字符串,请设计一个算法,判断其是否为一个合法的括号串。
给定一个字符串A和它的长度n,请返回一个bool值代表它是否为一个合法的括号串。
测试样例:
"(()())",6
返回:true
测试样例:
"()a()()",7
返回:false
测试样例:
"()(()()",7
返回:false
思路:
这道题刚开始理解有问题,还以为是((a))这样的形式才算过
其实是判断合法的括号串,出现了非括号的字符就算错
* 1.碰到")"开始弹出栈顶的"(",如果此时栈为空,则返回false
* 2.碰到其他内容直接返回false
* 3.字符串结尾时,栈非空返回false
import java.util.*;
public class Parenthesis {
public boolean chkParenthesis(String A, int n) {
// write code here
if(n==0)return false;
Stack<Character> stack = new Stack<>();
for(int i=0;i<A.length();i++){
Character a = A.charAt(i);
if(a.equals('('))stack.push(a);
else if (a.equals(')')) {
if(stack.isEmpty())return false;
else stack.pop();
}
else {//如果是其他字符,直接返回false
return false;
}
}//for
if(stack.isEmpty())return true;
else {
return false;
}
}
}