原题描述:
假设一个算术表达式中可以包含三种括号:圆括号"(" 和 ")",方括号"["和"]"和花括号"{"和"}",且这三种括号可按任意的次序嵌套使用(如:…[…{…}…[…]…]…[…]…(…)…)。编写判别给定表达式中所含括号是否正确配对出现的算法(已知表达式已存入数据元素为字符的顺序表中)。
解答:
本题属于栈的应用问题,充分利用了栈的入栈和弹栈功能。
1. 我的解答
经过查询ASCII码,}])相对于{[(相差1或者2,而表达式中又只有这六种符号,所以判别条件写出这样的形式,但这并不是一种 很好的解决方案。
import java.util.Scanner;
import java.util.Stack;
public class parenthesis_matching {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Stack<Character> a = new Stack<>();
int n = sc.nextInt();
String s = sc.next();
boolean flag = true;
for(int i = 0;i < n;++i) {
char c = s.charAt(i);
if(c == '