表达式只有加减、括号、空格和整数,没有乘除。从左到右扫,用栈记住括号外那一层的结果。
给定一个字符串表达式 s,请实现一个基本计算器来计算并返回该表达式的值。
表达式中可能包含整数、加法运算符 +、减法运算符 −、左右括号以及空格。
需要正确处理括号中的表达式以及负数。例如,−(2+3) 是一个合法的表达式。
注意,不允许使用任何能够直接将字符串作为数学表达式进行计算的内置函数。
输入一行字符串 s,表示需要计算的数学表达式。
表达式中可能包含空格。
1≤∣s∣≤3×105
字符串 s 由数字 0 到 9、运算符 +、−、左括号、右括号和空格组成。
s 表示一个有效的数学表达式。
运算符 + 不能作为一元运算符。
运算符 − 可以作为一元运算符。
输入中不存在两个连续的操作符。
每个数字以及所有中间计算结果均在有符号 32 位整数范围内。
输出一个整数,表示表达式 s 的计算结果。
输入
1 + 1
输出
2
说明
表达式的计算结果为 1+1=2。
输入
2-1 + 2
输出
3
说明
表达式的计算结果为 2−1+2=3。
输入
(1+(4+5+2)-3)+(6+8)
输出
23
说明
先计算括号中的表达式,最终结果为
(1+(4+5+2)−3)+(6+8)=23。
© CodeFun2000 · 使用条款
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册