题目1:
实现一个基本的计算器来计算一个简单的字符串表达式 s 的值。
示例 1:
输入:s = “1 + 1”
输出:2
示例 2:
输入:s = " 2-1 + 2 "
输出:3
示例 3:
输入:s = “(1+(4+5+2)-3)+(6+8)”
输出:23
提示:
- 1 <= s.length <= 3 * 105
- s 由数字、’+’、’-’、’(’、’)’、和 ’ ’ 组成
- s 表示一个有效的表达式
解法:
由于只有加减法,所以可以把括号全都展开来写,例如 2 - (1 - 3)展开成 2 - 1 + 3。
int calculate(string s)
{
stack<char> st;//记录括号之前的符号
st.push(1);//默认为"+"
int res = 0,//作为累加结果
num = 0, //将字符串转成数字,”123“==>123
op = 1;//主要解决每个数字或者括号之前的‘+’,‘-’的问题
for (char& x : s)
{
if (x >= '0' && x <= '9')
{
num = num * 10 + (x - '0');