力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台
给你一个字符串数组
tokens
,表示一个根据 逆波兰表示法 表示的算术表达式。请你计算该表达式。返回一个表示表达式值的整数。
注意:
- 有效的算符为
'+'
、'-'
、'*'
和'/'
。- 每个操作数(运算对象)都可以是一个整数或者另一个表达式。
- 两个整数之间的除法总是 向零截断 。
- 表达式中不含除零运算。
- 输入是一个根据逆波兰表示法表示的算术表达式。
- 答案及所有中间计算结果可以用 32 位 整数表示。
题解:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台
利用栈的先进后出
代码如下:
- class Solution {
- public int evalRPN(String[] tokens) {
- Stack
s = new Stack<>(); - for(String str : tokens) {
- if("+".equals(str)) {
-
- s.push(s.pop()+s.pop());
- }
-
- else if("-".equals(str)){
- //先出栈的在运算符第二位
- s.push(-s.pop() + s.pop());
- }
- else if("*".equals(str)) {
- s.push(s.pop() * s.pop());
- }
- else if("/".equals(str)){
- //先出栈的在运算符第二位
- int temp1 = s.pop();
- int temp2 = s.pop();
- s.push(temp2 / temp1);
- }
- else{
- s.push(Integer.valueOf(str));
- }
- }
- return s.pop();
-
- }
-
- }