模拟堆栈,遇到()或者[]就出栈,如果最后堆栈为空则说明合法
import java.util.Scanner;
import java.util.Stack;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
Stack<Character> s = new Stack<>();
int n = scan.nextInt();
scan.nextLine();
for(int i=0;i<n;i++){
while(!s.isEmpty()){
s.pop();
}
String str = scan.nextLine();
for(int j=0;j<str.length();j++){
char c = str.charAt(j);
if(c=='('||c=='['){
s.add(c);
}else if(c==')'||c==']'){
if(s.isEmpty()){
s.add(c);
}
if(c==']'){
if(s.peek()=='['){
s.pop();
}
}else if(c==')'){
if(s.peek()=='('){
s.pop();
}
}
}
}
if(s.isEmpty()){
System.out.println("Yes");
}else{
System.out.println("No");
}
}
}
}
本文介绍了一种使用Java实现的括号匹配验证算法。通过利用堆栈数据结构,该算法可以有效地判断输入字符串中的括号是否正确配对。具体而言,当遇到左括号时将其压入堆栈,遇到右括号时检查堆栈顶部是否有对应的左括号,最终堆栈为空则表示所有括号正确匹配。
769

被折叠的 条评论
为什么被折叠?



