zoukankan      html  css  js  c++  java
  • 利用栈进行运算

    例子: ["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;
                        
            }
           }
        
    }

  • 相关阅读:
    电梯调度算法---结对项目小进展
    程序的单元测试—软件工程课上所获得的感悟
    软件工程之个人项目--词频统计
    c语言中文件的读写函数
    9、访问或添加属性
    5、AOP例子(切面,通知,切入点)
    6、AOP相关概念
    4、SSH集成笔记
    3、整合SSH遇到的问题
    1、各个包的作用
  • 原文地址:https://www.cnblogs.com/wanglingdeboke/p/9471315.html
Copyright © 2011-2022 走看看