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;
                        
            }
           }
        
    }

  • 相关阅读:
    前端模板Nunjucks简介
    git提交时支持文件名大小写的修改
    多行文本加省略号的处理方法
    前端性能优化实践方案总结
    使用gulp工具生成svgsprites
    koa简介
    JSX语法简介
    踩坑所引发出的appendChild方法的介绍
    React业务实践
    javascript--数组
  • 原文地址:https://www.cnblogs.com/wanglingdeboke/p/9471315.html
Copyright © 2011-2022 走看看