看题目以为多牛逼的一道题,一进去一看,中等题,好!做!
思路:遇到数字入栈,遇到符号出两个数字进行运算,结果再入栈,最后返回栈顶元素
非常非常简单的一题,看了一下题解,确实也是最简解法了,说明力扣的题目难度真的很有问题
通过代码(java)
class Solution {
public int evalRPN(String[] tokens)
{
//创建一个栈
Stack<Integer> stack = new Stack();
//循环遍历字符串
for(int i = 0;i < tokens.length;i++)
{
//判断是不是加减乘除
if(!(tokens[i].equals("+") || tokens[i].equals("-") ||
tokens[i].equals("*") || tokens[i].equals("/")))
{
//不是,直接入栈
stack.push(new Integer(tokens[i]));
}else
{
//是,执行运算
int k = stack.pop();
int j = stack.pop();
//执行运算
stack.push(caculate(j,k,tokens[i]));
}
}
return stack.pop();
}
private int caculate(int i,int j,String symbol)
{
//加法
if(symbol.equals("+"))
return i + j;
else if(symbol.equals("-"))
return i - j;
else if(symbol.equals("*"))
return i * j;
else if(symbol.equals("/"))
return i / j;
else
return 0;
}
}