前言:记录一下leetcode上的一道题目:

题目网址:https://leetcode.com/problems/evaluate-reverse-polish-notation/description/

问题描述:

Evaluate the value of an arithmetic expression in Reverse Polish Notation.

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

  思路:

  • 当前拥有的内容:一个字符串数组,加减乘除,其余都是整数的字符串 可以对此字符数组中的内容进行栈的相关操作,首先创建一个整数类型的栈来放置这些数。

    • 如果是整数形式的字符串;就把这个字符串转化成为整数入栈,这是为了便于后边,遇到运算符的时候方便出栈操作,并且再进行后期的入栈操作;
    • 如果是运算符号字符串就连续有两次出栈,此处根据示例,确定符号放在谁的前边,做了相应的运算的结果还要再次入栈;
    • 就这样,最后得到的会是一个整数。就是我们想要的,最后这个代码虽然是Acceped的但是还是有不足的地方,不能很好处理一些特殊情况。

解题Java代码如下:代码是我从Leetcode的Discuss里,摘抄过来的。网址:https://leetcode.com/problems/evaluate-reverse-polish-notation/discuss/

 1 class Solution {
 2     public int evalRPN(String[] a) {
 3       Stack<Integer> stack = new Stack<Integer>();
 4
 5       for (int i = 0; i < a.length; i++) {
 6         switch (a[i]) {
 7           case "+":
 8             stack.push(stack.pop() + stack.pop());
 9             break;
10
11           case "-":
12                 //注意"-"和"/"放置的位置
13             stack.push(-stack.pop() + stack.pop());
14             break;
15
16           case "*":
17             stack.push(stack.pop() * stack.pop());
18             break;
19
20           case "/":
21             int n1 = stack.pop(), n2 = stack.pop();
22             if(n1 == 0){
23                 System.out.println("原逆波兰式有误");
24             }
25             stack.push(n2 / n1);
26             break;
27
28           default:
29
30             stack.push(Integer.parseInt(a[i]));
31         }
32       }
33     return stack.pop();
34     }
35 }

 扩展:

如果是要了解更多的内容,可以看看关于Swift相关的栈操作;据我所知Objective-C没有提供相应的栈的操作方法,Swift的话,有往数组中添加元素,有获取到栈顶的元素的方法,有出栈的方法,但是没有明确的入栈之类的方法,下边的链接给出了相应的Swift的入栈、出栈、判断栈是否为空、计算栈中的元素的个数的相关内容:

https://github.com/raywenderlich/swift-algorithm-club/tree/master/Stack

iOS交流群欢迎你的加入!

群二维码:

先写到这么多

如有问题,敬请指正;

如需转载,请注明出处,谢谢!

转载于:https://www.cnblogs.com/ITCoderW/p/7886334.html

leetcode - 150. Evaluate Reverse Polish Notation相关推荐

  1. LeetCode 150. Evaluate Reverse Polish Notation

    LeetCode 150. Evaluate Reverse Polish Notation Solution1: 参考网址:http://www.cnblogs.com/grandyang/p/42 ...

  2. Leetcode 之Evaluate Reverse Polish Notation(41)

    很简单的一道题,定义一个栈保留操作数,遇操作符则弹出运算即可. bool isOperator(string &op){//注意用法return op.size() == 1 &&am ...

  3. leetcode day1 -- Reverse Words in a String Evaluate Reverse Polish Notation Max Points on a Li

    以前从来没做过什么oj,发现做oj和在本地写代码或者纸上写差别还是很大的,觉得今天开始刷oj,特此记录一下. 1.Reverse Words in a String Given an input st ...

  4. 计算后续表达式 LectCode之Evaluate Reverse Polish Notation

    在记录lectcode这道题目前先说明一下三个相关知识点:前序表达式,中序表达式,后序表达式 前序表达式(Polish Notation 或 Prefix Notation): 前序表达式就是不含括号 ...

  5. 150 Evaluate Reverse Polish

    1题目理解 输入:一个字符串数组.这个字符串数组表示算数运算的逆波兰表示法.一般算数表示方法是2+1,逆波兰表示是2 1 +. 输出:一个int值. Example 1: Input: [" ...

  6. LeetCode-150-Evaluate Reverse Polish Notation

    算法描述: Evaluate the value of an arithmetic expression in Reverse Polish Notation. Valid operators are ...

  7. Algorithm:C++语言实现之链表相关算法(单链公共结点问题、一般LCA、括号匹配、最长括号匹配、逆波兰表达式Reverse Polish Notation、直方图矩形面积、收集雨水问题)

    Algorithm:C++语言实现之链表相关算法(单链公共结点问题.一般LCA.括号匹配.最长括号匹配.逆波兰表达式Reverse Polish Notation.直方图矩形面积.收集雨水问题) 目录 ...

  8. Reverse Polish Notation

    http://www.1point3acres.com/bbs/thread-31595-1-1.html 定义一种叫做"Reverse Polish Notation"的表达式: ...

  9. [LeetCode]题解(python):150-Evaluate Reverse Polish Notation

    题目来源: https://leetcode.com/problems/evaluate-reverse-polish-notation/ 题意分析: 给定一个数组,用这个数组来表示加减乘除,例如 [ ...

最新文章

  1. MySQL用得好好的,为什么要转ES?
  2. 快乐学习Pandas入门篇:Pandas基础
  3. GP官网上的TEE学习课程和费用介绍
  4. java lock 对象_Java并发编程锁系列之ReentrantLock对象总结
  5. Frame和Iframe横向滚动条的解决方案
  6. (连通图 模板题 无向图求桥)Critical Links -- UVA -- 796
  7. C++中void和void*指针的含义 (指针类型的含义)
  8. LiveWriter测试
  9. pid和linux的关系,linux – bash pid和$$之间的区别
  10. 【codevs1281】Xn数列,矩阵乘法练习
  11. 爱情六十三课,定个开放日
  12. java xml 面试_Java程序员面试常见的10道XML面试题
  13. NRF52840学习——GPIO输入,实现按键短按和长按
  14. 简道云-灵活易用的应用搭建平台
  15. 5214页PDF的进阶架构师学习笔记,阿里巴巴内部Jetpack宝典意外流出
  16. animation-delay负值妙用,你不来了解一下吗
  17. android 9平板电脑截屏,平板电脑怎么截图 平板电脑截图方法【详解】
  18. canvas画一个渐变色的环形进度环
  19. “专车”监管意见最快本月公布
  20. 符咒AA4属性转移模块

热门文章

  1. elastic的gc相关
  2. Ethereum 君士坦丁堡安全漏洞对 FOD 的影响
  3. semantic-ui-react图像组件不显示图像的问题
  4. GPT分区无损转MBR分区的操作
  5. Bzoj3168 [Heoi2013]钙铁锌硒维生素
  6. WSO2 ESB(1)
  7. 关于Installshield里一些常见问题的解答—艾泽拉斯之海洋女神出品
  8. mysql 锁的介绍
  9. 区块链公司Coingeek支持一系列BCH协议变更
  10. BCH矿池新格局,Coingeek矿池曾成为BCH算力最大的矿池