Description
1、问题描述
一个算术表达式中包括圆括号、方括号和花括号三种形式的括号
编程实现判别表达式中括号是否正确匹配的算法
2、算法
顺序扫描算术表达式
若算术表达式扫描完成,此时如果栈空,则正确返回(0);如果栈未空,说明左括号多于右括号,返回(-3)
从算术表达式中取出一个字符,如果是左括号(‘(‘或‘[‘或 ‘{‘),则让该括号进栈(PUSH)
如果是右括号(‘)‘或‘]‘或 ‘}‘):
⑴、如果栈为空,则说明右括号多于左括号,返回(-2)
⑵、如果栈不为空,则从栈顶弹出(POP)一个括号: 若括号匹配,则转1继续进行判断;否则,说明左右括号配对次序不正确,返回(-1)
Input
第一行:样本个数,假设为n。
第二到n+1行,每一行是一个样本(算术表达式串),共n个测试样本。
Output
共有n行,每一行是一个测试结果,有四种结果:
0:左右括号匹配正确
-1:左右括号配对次序不正确
-2:右括号多于左括号
-3:左括号多于右括号
Sample Input
4
{[(1+2)*3-1]
{[(1+2]*3)-1}
{[(1+2)*3]-1}
(1+2)*3)-1}
Sample Output
-3
-1
0
-2