博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
150. Evaluate Reverse Polish Notation
阅读量:5052 次
发布时间:2019-06-12

本文共 992 字,大约阅读时间需要 3 分钟。

Evaluate the value of an arithmetic expression in .

Valid operators are +-*/. Each operand may be an integer or another expression.

Some examples:

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

逆波兰式,通常用stack解决。

public class Solution {

  public int evalRPN(String[] tokens) {
    Stack<Integer> numbers = new Stack<Integer>();
    for(String token : tokens) {
      switch(token) {
        case "+":
        case "-":
        case "*":
        case "/": int a = numbers.pop();
            int b = numbers.pop();
            numbers.push(eval(a,b,token));
            break;
        default: numbers.push(Integer.parseInt(token));
      }
    }
    return numbers.pop();
  }
  private int eval(int a, int b, String operator) {
    switch(operator) {
      case "+": return b+a;
      case "-": return b-a;
      case "*": return b*a;
      case "/": return b/a;
    }
    return 0;
  }
}

转载于:https://www.cnblogs.com/shini/p/4427449.html

你可能感兴趣的文章
SVN服务器搭建和使用(三)(转载)
查看>>
Android 自定义View (三) 圆环交替 等待效果
查看>>
设置虚拟机虚拟机中fedora上网配置-bridge连接方式(图解)
查看>>
HEVC播放器出炉,迅雷看看支持H.265
查看>>
[置顶] Android仿人人客户端(v5.7.1)——人人授权访问界面
查看>>
Eclipse 调试的时候Tomcat报错启动不了
查看>>
【安卓5】高级控件——拖动条SeekBar
查看>>
ES6内置方法find 和 filter的区别在哪
查看>>
Android入门之文件系统操作(二)文件操作相关指令
查看>>
Android实现 ScrollView + ListView无滚动条滚动
查看>>
Swift 中的指针使用
查看>>
Swift - 使用闭包筛选过滤数据元素
查看>>
alue of type java.lang.String cannot be converted to JSONObject
查看>>
搜索引擎选择: Elasticsearch与Solr
查看>>
JAVA设计模式之简单工厂模式与工厂方法模式
查看>>
③面向对象程序设计——封装
查看>>
【19】AngularJS 应用
查看>>
Spring
查看>>
Linux 系统的/var目录
查看>>
Redis学习---Redis操作之其他操作
查看>>