[作业] 逆波兰表达式求值

代码

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循环检测字符串组
将数字放入一个栈中
若检测到运算符,则取栈顶两元素运算(-与/须注意顺序),并将结果压入栈中
循环结束后栈中应该只剩一个元素即结果,返回之

发布了16 篇原创文章 · 获赞 1 · 访问量 271

猜你喜欢

转载自blog.csdn.net/qq_43727054/article/details/105028305