代码
public class Solution {
public int EvalRPN(string[] tokens) {
Stack<int> temp=new Stack<int>();
for(int i=0;i<tokens.Length;i++)
{
if(!(tokens[i].Equals("+")||tokens[i].Equals("-")||tokens[i].Equals("*")||tokens[i].Equals("/")))
temp.Push(Convert.ToInt32(tokens[i]));
else
{
switch(tokens[i])
{
case "+":
temp.Push(temp.Pop()+temp.Pop());
break;
case "-":
int a=temp.Pop(),b=temp.Pop();
temp.Push(b-a);
break;
case "*":
temp.Push(temp.Pop()*temp.Pop());
break;
case "/":
int c=temp.Pop(),d=temp.Pop();
temp.Push(d/c);
break;
}
}
}
return temp.Pop();
}
}
思路
for循环检测字符串组
将数字放入一个栈中
若检测到运算符,则取栈顶两元素运算(-与/须注意顺序),并将结果压入栈中
循环结束后栈中应该只剩一个元素即结果,返回之