对于一个字符串,请设计一个算法,判断其是否为一个合法的括号串。
给定一个字符串A和它的长度n,请返回一个bool值代表它是否为一个合法的括号串。
测试样例:
“(()())”,6
返回:true
测试样例:
“()a()()”,7
返回:false
测试样例:
“()(()()”,7
返回:false
import java.util.*;
//用栈实现
public class Parenthesis {
public boolean chkParenthesis(String A, int n) {
Stack<Character> s = new Stack<>();
for(int i = 0;i < n;i++){//循环取括号
char ch = A.charAt(i);
//左括号入栈
if(ch == '(' || ch == '{' || ch== '['){
s.push(ch);
}
//右括号为空(左比右多)不空(匹配)
else if(ch == ')' || ch == '}' || ch == ']'){
if(!s.isEmpty()){
char ch1 = s.peek();//拿到栈顶元素
if((ch1=='(' && ch==')')||(ch1=='{' && ch=='}')||(ch1=='[' && ch==']')){
s.pop();//匹配出栈
}
else{
return false;
}
}
else{
return false;
}
}
else{
return false;
}
}
if(s.isEmpty()){
return true;
}
return false;
}
}
只有一种括号
public boolean fun(String s) {
if(s.length()%2==1) {
return false;
}
int count=0;
for (char c:s.toCharArray()) {
if(c=='(') {
count++;
}else {
count--;
}
}
return count==0;
}