>150. 逆波兰表达式求值<
>evalRPN<
一、解题思路
1、解法一( Java )
解法思路:系统栈
所有的「表达式计算」
问题都离不开「栈」
。
插入元素的函数 push()
方法和用于弹出元素的 pop()
方法来实现栈
建立一个「数字栈」
,存放所有的整数,当遇到运算符时,从栈中取出两个数进行运算,并将结果放回栈内,整个过程结束后,栈顶元素就是最终结果。
代码如下:
/**
* @author listen1024
* @date 2022-2-11
* 150. 逆波兰表达式求值(系统栈)
*/
class Solution {
public int evalRPN(String[] tokens) {
if(tokens == null || tokens.length < 1)
return 0;
Stack<Integer> stack = new Stack();
for(String token : tokens){
if(token.equals("+") || token.equals("-") || token.equals("*") || token.equals("/")){
int last = stack.pop();
int pre = stack.pop();
if(token.equals("+"))
stack.push(pre+last);
else if(token.equals("-"))
stack.push(pre-last);
else if(token.equals("*"))
stack.push(pre*last);
else if(token.equals("/"))
stack.push(pre/last);
}
else
stack.push(Integer.valueOf(token));
}
return stack.pop();
}
}
运行结果截图如下: