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

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

链接:

大意:

给一个逆波兰表达式tokens,求出该表达式的值。规定:逆波兰表达式中运算符只有 '+' '-' '*' '/' 例子:

思路:

使用一个操作数栈,遍历tokens。

如果当前字符串可以对应一个整数,那将其转为整数并压入操作数栈中

如果当前字符串是一个操作符ope,则依次取两次栈顶元素(使用删除栈顶元素),即为num2,num1.将num1 ope num2的结果压入栈。

最后栈中将只剩一个元素,这个元素即为所求的结果

代码:

class Solution {    public int evalRPN(String[] tokens) {        if (tokens.length == 0)            return 0;        ArrayList
stack = new ArrayList<>(); for (String str : tokens) { char c = str.charAt(0); // ‘+’和‘-’既可以表示一个数的正负 也可以表示一个运算符 if ((c == '+' && str.length() == 1) || (c == '-' && str.length() == 1) || c == '*' || c == '/') { if (c == '+') { int num2 = stack.remove(stack.size() - 1), num1 = stack.remove(stack.size() - 1); stack.add(num1 + num2); } if (c == '-') { int num2 = stack.remove(stack.size() - 1), num1 = stack.remove(stack.size() - 1); stack.add(num1 - num2); } if (c == '*') { int num2 = stack.remove(stack.size() - 1), num1 = stack.remove(stack.size() - 1); stack.add(num1 * num2); } if (c == '/') { int num2 = stack.remove(stack.size() - 1), num1 = stack.remove(stack.size() - 1); stack.add(num1 / num2); } } else { stack.add(Integer.valueOf(str)); } } return stack.remove(0); }}

结果:

结论:

有关栈问题且很基础的一个题。 

 

 

转载地址:http://lxesi.baihongyu.com/

你可能感兴趣的文章
Vue 解决部署到服务器后或者build之后Element UI图标不显示问题(404错误)
查看>>
element-ui全局自定义主题
查看>>
facebook库runtime.js
查看>>
vue2.* 中 使用socket.io
查看>>
openlayers安装引用
查看>>
js报错显示subString/subStr is not a function
查看>>
高德地图js API实现鼠标悬浮于点标记时弹出信息窗体显示详情,点击点标记放大地图操作
查看>>
初始化VUE项目报错
查看>>
vue项目使用安装sass
查看>>
HTTP和HttpServletRequest 要点
查看>>
在osg场景中使用GLSL语言——一个例子
查看>>
关于无线PCB中 中50欧姆的特性阻抗的注意事项
查看>>
Spring的单例模式源码小窥
查看>>
后台服务的变慢排查思路(轻量级应用服务器中测试)
查看>>
MySQL中InnoDB事务的默认隔离级别测试
查看>>
微服务的注册与发现
查看>>
bash: service: command not found
查看>>
linux Crontab 使用 --定时任务
查看>>
shell编程----目录操作(文件夹)
查看>>
机器学习-----K近邻算法
查看>>