算法练习(31):管道(1.3.11)

本系列博客习题来自《算法(第四版)》,算是本人的读书笔记,如果有人在读这本书的,欢迎大家多多交流。为了方便讨论,本人新建了一个微信群(算法交流),想要加入的,请添加我的微信号:zhujinhui207407 谢谢。另外,本人的个人博客 http://www.kyson.cn 也在不停的更新中,欢迎一起讨论

算法(第4版)

知识点

  • 管道
  • 后缀表达式计算计算结果

题目

1.3.11 编写一段程序EvaluatePostfix,从标准输入中得到一个后序表达式,求值并打印结果。(将上一题的程序中得到的输出用管道传递给这一段程序可以得到和Evaluate相同的行为)


1.3.11 Write a program EvaluatePostfix that takes a postfix expression from standard input, evaluates it, and prints the value. (Piping the output of your program from the previous exercise to this program gives equivalent behavior to Evaluate.

分析

本人所有简书的算法文章详细分析已经移入小专栏:算法四习题详解,欢迎大家订阅

答案

private static String evaluatePostfix(String expression) {
        Stack<Double> vals = new Stack<Double>();
        for (int j = 0; j < expression.length(); j++) {
            char charAtIndex = expression.charAt(j);
            String s = String.valueOf(charAtIndex);
            if (s.equals("+")) {
                Double valDouble1 = vals.pop();
                Double valDouble2 = vals.pop();
                s = valDouble1 + valDouble2 + "";
                vals.push(Double.parseDouble(s));
            }else if (s.equals("-")) {
                Double valDouble1 = vals.pop();
                Double valDouble2 = vals.pop();
                s = valDouble1 - valDouble2 + "";
                vals.push(Double.parseDouble(s));
            }else if (s.equals("*")) {
                Double valDouble1 = vals.pop();
                Double valDouble2 = vals.pop();
                s = valDouble1 * valDouble2 + "";
                vals.push(Double.parseDouble(s));
            }else if (s.equals("/")) {
                Double valDouble1 = vals.pop();
                Double valDouble2 = vals.pop();
                s = valDouble1 / valDouble2 + "";
                vals.push(Double.parseDouble(s));
            }else {
                vals.push(Double.parseDouble(s));
            }

        }

        return vals.pop().toString();
    }

代码索引

EvaluatePostfix.java

视频讲解

点此观看分析视频:顶级程序员教你学算法(31)-管道(1.3.11)

广告

我的首款个人开发的APP壁纸宝贝上线了,欢迎大家下载。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 大家好,我是宋晓霞,来自美丽的滨州,喜欢这个地方,静雅的普禾书吧,修身养性的瑜伽馆,心灵成长的平安果,宽容博大的学...
    安安木棉阅读 170评论 0 0
  • #玩卡不卡·每日一抽#每一位都可以通过这张卡片觉察自己: 1、直觉他叫什么名字?小贝 2、他几岁了?8岁 3、他现...
    af6f43297f9b阅读 214评论 0 0
  • 今天我再次对工作动摇了。16年11月底入职蓝月亮以来,我的业务线条变动了两次,直接上级变动了三次,负责的工作区域变...
    更向远行阅读 194评论 0 0