import java.util.ArrayDeque;
import java.util.Deque;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Deque<Character> staCharacters = new ArrayDeque<>();
Scanner scanner = new Scanner(System.in);
String string = scanner.next();
for (int i = 0; i < string.length(); i++) {
char c = string.charAt(i);
if (c == '(' || c == '[') {
staCharacters.push(c);
}
if (c == ')') {
if (staCharacters.isEmpty()) {
System.out.println("false");
return;
} else {
if (staCharacters.peek() != '(') {
System.out.println("false");
return ;
} else {
staCharacters.pop();
}
}
} else if (c == ']') {
if (staCharacters.isEmpty()) {
System.out.println("false");
return;
} else {
if (staCharacters.peek() != '[') {
System.out.println("false");
return ;
} else {
staCharacters.pop();
}
}
}
}
System.out.println("true");
}
}
括号匹配的思想其实不难,就是检索字符串的每一个字符,如果是'('或'[',就压入栈中,如果是')'或']'就判断栈顶元素是否为对应的左括号,不过不是对应的那么就是false,如果是,那就弹出,继续判断,一直到最后都没有问题就返回true



京公网安备 11010502036488号