一、题目描述
(1+(2+3)*(3+(8+0))+1-2) 这是一个简单的数学表达式,今天不是计算它的值, 而是比较它的括号匹配是否正确。
前面这个式子可以简化为((()))这样的括号我们认为它是匹配正确的, 而(((())这样的我们就说他是错误的。注意括号里面的表达式Q 可能是错的,也可能有多个空格, 对于这些我们是不用去管的, 我们只关心括号是否使用正确。
二、输入描述
给出一行表达式式(长度不超过 100)。
三、输出描述
如果匹配正确输出括号的对数,否则输出-1。
四、测试用例
测试用例1:
1、输入
1+(2+3)*(3+(8+0))+1-2
2、输出
3
测试用例2:
1、输入
(1 + (2 - 3) * (4 / 5))
2、输出
3
五、解题思路
1、栈
栈的先进后出(LIFO)特性非常适合用于括号匹配问题,因为每一个右括号都需要与最近的未匹配的左括号进行配对。
栈用于跟踪左括号(的出现
订阅专栏 解锁全文






