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

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

The algorithm for evaluating any postfix expression is fairly straightforward:

While there are input tokens left

    • Read the next token from input.
    • If the token is a value
      • Push it onto the stack.
    • Otherwise, the token is an operator (operator here includes both operators and functions).
      • It is known  that the operator takes n arguments.
      • If there are fewer than n values on the stack
        • (Error) The user has not input sufficient values in the expression.
      • Else, Pop the top n values from the stack.
      • Evaluate the operator, with the values as arguments.
      • Push the returned results, if any, back onto the stack.
  • If there is only one value in the stack
    • That value is the result of the calculation.
  • Otherwise, there are more values in the stack
    • (Error) The user input has too many values.
1 class Solution { 2 public: 3     int evalRPN(vector
&tokens) { 4 if (tokens.empty()) return 0; 5 6 stack
st; 7 8 for (int i = 0; i < tokens.size(); ++i) { 9 if (tokens[i] == "+" || tokens[i] == "-" || tokens[i] == "*" || tokens[i] == "/") {10 if (st.empty()) return 0;11 int n1 = st.top();12 st.pop();13 if (st.empty()) return 0;14 int n2 = st.top();15 st.pop();16 if (tokens[i] == "+") st.push(n1 + n2);17 else if (tokens[i] == "-") st.push(n2 - n1);18 else if (tokens[i] == "*") st.push(n2 * n1);19 else if (n1 == 0) return 0;20 else st.push(n2 / n1);21 } else {22 st.push(atoi(tokens[i].c_str()));23 }24 }25 26 return st.top();27 }28 };

 

转载于:https://www.cnblogs.com/linyx/p/3656406.html

你可能感兴趣的文章
电脑录音软件哪个好,怎么用电脑录音
查看>>
《前端十年-我将一切告诉你》人物关系图
查看>>
angular js中的依赖注入是什么?
查看>>
聊聊 Array 中的坑
查看>>
修改golang源代码获取goroutine id实现ThreadLocal
查看>>
Flutter尝鲜2——动画处理<基础>
查看>>
【Redis源码分析】Redis的压缩列表ZipList
查看>>
【学习笔记】CSS深入理解之line-height
查看>>
41. 缺失的第一个正数
查看>>
【C++】 47_父子间的冲突
查看>>
[LeetCode] 694. Number of Distinct Islands
查看>>
文章收藏夹
查看>>
PHP设计模式(五)建造者模式(Builder)
查看>>
关于如何在Python中使用静态、类或抽象方法的权威指南
查看>>
RabbitMQ 初级教程[0] - Mac下安装
查看>>
标题:DKhadoop大数据处理平台监控数据介绍
查看>>
Selenium实战教程系列(三)--- Selenium中的动作
查看>>
我理解的数据结构(六)—— 集合和映射(Set And Map)
查看>>
Python实用技法第15篇:筛选序列中的元素
查看>>
MongoDB、Hbase、Redis等NoSQL优劣势、应用场景
查看>>