• 利用栈进行运算


    例子: ["2", "1", "+", "3", "*"] -> ((2 + 1) * 3) -> 9
           ["4", "13", "5", "/", "+"] -> (4 + (13 / 5)) -> 6

    题意为 参数 a,b 运算符,对其运算,正好利用栈的性质,没读到操作符的时候,入栈,匹配到操作符,就弹出参数,进行运算,运算完再入栈,最后返回栈顶元素。

    public class Solution {
        public int evalRPN(String[] tokens) {
            Stack<Integer> s = new Stack<Integer>();//栈
            for(int i=0;i<tokens.length;i++){
                if(tokens[i].equals("+")||tokens[i].equals("-")||tokens[i].equals("*")||tokens[i].equals("/")){
                 int y=s.pop();
                 int x=s.pop();
                    s.push(Calculate(tokens[i],x,y));
                    
                }
                else{
                    s.push(Integer.parseInt(tokens[i]));//把不是运算符的存储在栈里面
                }
               
            }
            return s.pop();
        }
        public int Calculate(String str,int a,int b){
            switch(str){
                    case"+":
                        return a+b;
                    case"-":
                        return a-b;
                    case"*":
                        return a*b;
                    case"/":
                        return a/b;
                    default:
                        return 0;
                        
            }
           }
        
    }

  • 相关阅读:
    Matlab随笔之三维图形绘制
    Matlab随笔之模拟退火算法
    Matlab随笔之矩阵入门知识
    Matlab随笔之求解线性方程
    Matlab随笔之分段线性函数化为线性规划
    Matlab随笔之指派问题的整数规划
    Matlab随笔之线性规划
    Android单位转换 (px、dp、sp之间的转换工具类)
    Android禁止输入表情符号
    设计模式之策略模式
  • 原文地址:https://www.cnblogs.com/wanglingdeboke/p/9471315.html
Copyright © 2020-2023  润新知