括号匹配问题

来源:互联网 发布:淘宝买烟怎么搜索 编辑:程序博客网 时间:2024/04/27 14:59
import java.util.*;
public class d1 {
//括号配对问题
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();  //输入行数
String[] str=new String[n];  //初始化一个字符串数组,把每一行输入的各种括号先放进去
for(int i=0;i<n;i++){
String s=sc.next();
str[i]=s;
}
for(int i=0;i<n;i++){
String s=str[i];  //从第一个开始分别对每种括号检查是否匹配
if(s.length()%2!=0){
System.out.println("No");
}
else{
Stack<Character> st=new Stack<Character>();  //初始化一个堆栈
for(int j=0;j<s.length();j++){//对每行的括号逐一检查出入栈
if(st.isEmpty()){  //如果堆栈为空,截取第i个字符放入
st.push(s.charAt(j));
}
else if(st.peek()=='['&&s.charAt(j)==']'||st.peek()=='('&&s.charAt(j)==')'){
//如果此括号匹配成功把刚才入栈顶的括号出栈
st.pop();
}
else{//否则继续入栈
st.push(s.charAt(j));
}
}
if(st.isEmpty()){
System.out.println("Yes");
}
else
System.out.println("No");
}

}

}
}
0 0