zoukankan      html  css  js  c++  java
  • 栈应用——逆波兰式表达式的值

    问题描述:

        计算给定的逆波兰表达式(即后缀表达式)的值。

    事实上,二元运算的前提下,中缀表达式可以对应一棵二叉树;逆波兰式即该二叉树后序遍历的结果。

    分析思路:

    • 如果当前是操作数,则直接入栈;
    • 如果当前是操作符,则栈顶的两个元素弹出,然后与当前操作符运算后入栈。

    Code:

        /**
         * 给出一个逆波兰式,计算该表达式的值
         * @param s
         * @return
         */
        public int getTheValueOfRPN(String s) {
            char[] ch = s.toCharArray();
            Stack<Integer> stack = new Stack<Integer>();
            for(int i=0; i<ch.length; i++) {
                if(isOperator(ch[i])) {
                    int v1 = stack.peek();
                    stack.pop();
                    int v2 = stack.peek();
                    stack.pop();
                    if(ch[i] == '+')
                        stack.push(v1 + v2);
                    else if(ch[i] == '-')
                        stack.push(v1 - v2);
                    else if(ch[i] == '*')
                        stack.push(v1 * v2);
                    else 
                        stack.push(v1 / v2);
                }
                else 
                    stack.push(Integer.valueOf(ch[i]-48));
                
            }
            return stack.pop();
        }
    
        private boolean isOperator(char c) {
            // TODO Auto-generated method stub
            if(c == '+' || c == '-' || c == '*' || c == '/')
                return true;
            return false;
        }
  • 相关阅读:
    前端小tite(随笔)
    算法两数之和 python版
    常用标签
    pip install 遇到的问题
    不常用的模块
    约束和约束关系
    Django初识
    前端—Bootstrap
    前端—jQuery
    前端—BOM和DOM
  • 原文地址:https://www.cnblogs.com/little-YTMM/p/5448803.html
Copyright © 2011-2022 走看看