题目来源:https://leetcode-cn.com/problems/basic-calculator/
实现一个基本的计算器来计算一个简单的字符串表达式的值。
字符串表达式可以包含左括号
(
,右括号)
,加号+
,减号-
,非负整数和空格。示例 3:
输入: "(1+(4+5+2)-3)+(6+8)"
输出: 23说明:
- 你可以假设所给定的表达式都是有效的。
- 请不要使用内置的库函数 eval。
建立这样一个计算器,可以借助栈来实现。注意到加法满足交换律,而减法不满足交换律,所以把减法看作是下一个数字的符号。如3 -4 =3+(-4),这样每个数字就由一个标识sign来表示其正负性。
注意每次设置的sign都是暂存当前的操作符,这个sign会等到下一个数字来时才使用。比如3-4,读取到-号时,由于num为3,所以ans = ans + sign*num = 0 + 1*3= 3,然后暂存-号,置sign=-1,num=0,下一个数字4来到时,num=4,此时输入全部读取完毕,返回ans+sign*num = 3&#