zoukankan      html  css  js  c++  java
  • 使用栈计算后缀表达式

    package 数据结构;
    
    import java.util.Stack;
    
    /**
     * @program: java_每天一题
     * @description: 使用栈实现逆波兰表达式(后缀表达式)计算器
     *               思路:遇到符号,就弹出两个元素进行运算,将运算结果入栈,继续遍历下一位
     *                    遍历完成后,栈中只有一个元素,即是运算结果
     *
     *               中缀表达式(3+4)*5-6转后缀表达式 3 4 + 5 * 6 -
     * @author: czg
     * @create: 2020-05-16 10:42
     */
    public class j_栈_逆波兰表达式_计算器 {
        public static void main(String[] args) {
            System.out.println(evalRPN(new String[]{"1","2", "3", "+","4", "*", "+", "5", "-"}));
        }
    
    
        //判断是否是符号
        public static boolean isSign(String sign){
            return "+-*/".contains(sign);
        }
    
        /**
         * 进行计算
         * @param left 左边数值
         * @param right 右变数字
         * @param sign 运算符
         * @return
         */
        public static int compute(int left,int right,String sign){
            int result=0;
            switch (sign){
                case "+": result=left+right;break;
                case "-": result=left-right;break;
                case "*": result=left*right;break;
                default: result=left/right;break;
            }
            return result;
        }
    
        public static  int evalRPN(String[] tokens) {
    
            //创建一个栈
            Stack<Integer> st=new Stack<>();
    
            for (String token : tokens) {
                //如果遇到符号就弹出栈顶两个数字进行求和
                if(isSign(token)){
                    //先右在左数值
                    int right=st.pop();
                    int left=st.pop();
                    //将计算结果放回栈中
                    st.push(compute(left,right,token));
                }else {
                    //遇到数字直接放到栈中
                    st.push(Integer.parseInt(token));
                }
            }
            //当计算完成时,栈中只剩下一个数,即为结果
            return st.pop();
        }
    }
  • 相关阅读:
    怎么删除json 键值对
    解决html 图片缓存问题
    美工常用的网站分享
    小程序授权页面
    BitMap原理
    css页面加载动画
    可能这些是你想要的H5软键盘兼容方案
    关于范式 :1NF 2NF 3NF等
    Python3学习DAY4
    DTD相关
  • 原文地址:https://www.cnblogs.com/czgxxwz/p/12899885.html
Copyright © 2011-2022 走看看