Implement a basic calculator to evaluate a simple expression string.
he expression string may contain open(and closing parentheses), the plus + or minus sign - , non - negative integers and empty spaces .
You may assume that the given expression is always valid.
Some examples :
“1 + 1” = 2
“ 2-1 + 2 “ = 3
“(1+(4+5+2)-3)+(6+8)” = 23
题意:
实现基本的计算器来计算一个简单的表达式字符串,表达式字符串可能包含打开“(”和闭括号“)”,加号或减号,非负整数和空格。
思路:
方法一:
两个要点:
1、无括号时,顺序执行
2、有括号时,先执行括号中的
两个栈:
一个存放操作数,每次进栈要注意,如果操作符栈顶元素为’+’/‘-‘,则需要立即计算。
一个存放操作符(包括括号),每次出现’)’时,不断进行出栈计算再进栈,直到弹出’(‘,说明当前括号内计算完毕。
1 | class Solution { |
方法二:
由于表达式中只含有括号和加减法运算,我们可以通过加减法的规律对表达式进行化简,,因为只有加减,去括号的话只会影响括号内部的符号变换,表达式都是从左到右依次执行的,然后求值。
1 | class Solution { |
方法三:
通用性代码,可以包含乘除,加括号等。
1 | class Solution { |