package com.mxnet;
import java.util.Stack;
public class Solution150 {
public static void main(String[] args) {
}
/**
* 根据 逆波兰表示法,求表达式的值。
*
* 有效的算符包括+、-、*、/。每个运算对象可以是整数,也可以是另一个逆波兰表达式。
*
* 注意个整数之间的除法只保留整数部分。
*
* 可以保证给定的逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。
* @param tokens
* @return
* 思路
* 1. 使用栈结构保存所有数字
* 2. 依次遍历所有元素,如果是元素符,则从栈中弹出元素进行运算
* 3. 如果是数字则入栈
* 4. 最后计算的结构将保存在栈顶
*/
public int evalRPN(String[] tokens) {
int res = 0;
//定义栈保存数字
Stack<Integer> numStack = new Stack<>();
//遍历每个元素并进行判断执行
for (String token : tokens) {
if (token.equals("+")){
int num1 = numStack.pop();
int num2 = numStack.pop();
res = num1 + num2;
numStack.add(res);
}else if (token.equals("-")){
int num1 = numStack.pop();
int num2 = numStack.pop();
res = num2 - num1;
numStack.add(res);
}else if (token.equals("*")){
int num1 = numStack.pop();
int num2 = numStack.pop();
res = num1 * num2;
numStack.add(res);
}else if (token.equals("/")){
int num1 = numStack.pop();
int num2 = numStack.pop();
res = num2 / num1;
numStack.add(res);
}else {
numStack.add(Integer.parseInt(token));
}
}
return numStack.pop();
}
}
标签:numStack,num2,leetcode150,int,res,pop,求值,表达式,num1
From: https://www.cnblogs.com/mx-info/p/16622014.html