题目描述
(1+(2+3)*(3+(8+0))+1-2)这是一个简单的数学表达式,今天不是计算它的值,而是比较它的括号匹配是否正确。
前面这个式子可以简化为(()(()))这样的括号我们认为它是匹配正确的,
而((())这样的我们就说他是错误的。注意括号里面的表达式可能是错的,也可能有多个空格,对于这些我们是不用去管的,
我们只关心括号是否使用正确。
输入描述
给出一行表达式(长度不超过 100)。
输出描述
如果匹配正确输出括号的对数,否则输出-1。
用例
输入 (1+(2+3)*(3+(8+0))+1-2)
输出 4
说明 无
解题思路:
- 遍历表达式,遇到左括号时,将其位置入栈;
- 遇到右括号时,判断栈是否为空,如果为空则说明括号不匹配,返回-1;
- 如果栈不为空,弹出栈顶元素,表示匹配到一个括号对;
- 遍历结束后,如果栈为空,则说明括号匹配正确,返回括号对数;