zoukankan      html  css  js  c++  java
  • 150 Evaluate Reverse Polish Notation 逆波兰表达式求值

    求在 逆波兰表示法 中算术表达式的值。
    有效的运算符号包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰计数表达。
    例如:
      ["2", "1", "+", "3", "*"] -> ((2 + 1) * 3) -> 9
      ["4", "13", "5", "/", "+"] -> (4 + (13 / 5)) -> 6
    详见:https://leetcode.com/problems/evaluate-reverse-polish-notation/description/

    Java实现:

    逆波兰表达式就是把操作数放前面,把操作符后置的一种写法,通过观察可以发现,第一个出现的运算符,其前面必有两个数字,当这个运算符和之前两个数字完成运算后从原数组中删去,把得到一个新的数字插入到原来的位置,继续做相同运算,直至整个数组变为一个数字,这种解法会超时。完美的解法是使用栈,从前往后遍历数组,遇到数字则压入栈中,遇到符号,则把栈顶的两个数字拿出来运算,把结果再压入栈中,直到遍历完整个数组,栈顶数字即为最终答案。

    class Solution {
        public int evalRPN(String[] tokens) {
            if(tokens.length<1){
                return 0;
            }
            Stack<Integer> stack =new Stack<Integer>();
            for(String token:tokens){
                if(token.equals("+")){
                    int num1=stack.pop();
                    int num2=stack.pop();
                    stack.push(num1+num2);
                }
                else if(token.equals("*")){
                    int num1=stack.pop();
                    int num2=stack.pop();
                    stack.push(num1*num2);
                }
                else if(token.equals("/")){
                    int num1=stack.pop();
                    int num2=stack.pop();
                    stack.push(num2/num1);
                }
                else if(token.equals("-")){
                    int num1=stack.pop();
                    int num2=stack.pop();
                    stack.push(num2-num1);
                }
                else{
                    stack.push(Integer.parseInt(token));
                }
            }
            return stack.pop();
        }
    }
    
  • 相关阅读:
    2020阿里最新出品的泰山版Java开发手册,告别垃圾代码
    freecplus框架-目录操作
    freecplus框架简介
    freecplus框架-加载参数文件
    freecplus框架-xml解析
    freecplus框架-tcp网络通信
    freecplus框架-PostgreSQL数据库操作
    freecplus框架-Oracle数据库操作
    freecplus框架-MySQL数据库操作
    freecplus框架-ftp客户端
  • 原文地址:https://www.cnblogs.com/xidian2014/p/8727606.html
Copyright © 2011-2022 走看看