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

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

逆波兰表达式,情况不是很复杂,用一个栈就解决了。

#include 
#include
using namespace std;class Solution {public: int evalRPN(vector
&tokens) { for (int i = 0; i < tokens.size(); i++) { string &token = tokens[i]; if (token == "+") { int a = num_stack.top(); num_stack.pop(); int b = num_stack.top(); num_stack.pop(); int r = a + b; num_stack.push(r); } else if (token == "-") { int a = num_stack.top(); num_stack.pop(); int b = num_stack.top(); num_stack.pop(); int r = b - a; num_stack.push(r); } else if (token == "*") { int a = num_stack.top(); num_stack.pop(); int b = num_stack.top(); num_stack.pop(); int r = a * b; num_stack.push(r); } else if (token == "/") { int a = num_stack.top(); num_stack.pop(); int b = num_stack.top(); num_stack.pop(); int r = b / a; num_stack.push(r); } else { // number bool neg = (token[0] == '-'); int pos = 0; if (neg) { pos = 1; } int r = 0; for (int k = pos; k < token.length(); k++) { r = r * 10 + (token[k] - '0'); } if (neg) { r = -r; } num_stack.push(r); } } int result = num_stack.top(); num_stack.pop(); return result; }private: stack
num_stack;};

中间那些部分可以简化出来。

int o1, o2;  o2 = numeric.top();  numeric.pop();  o1 = numeric.top();  numeric.pop();  switch(t[0]){    case '+':        numeric.push(o1 + o2);        break;    case '-':        numeric.push(o1 - o2);        break;    case '*':        numeric.push(o1 * o2);        break;    case '/':        numeric.push(o1 / o2);        break;}

第二刷,Annie的解法比较简洁。且其中stoi可以直接将字符串转成整数。

转载于:https://www.cnblogs.com/lautsie/p/3512287.html

你可能感兴趣的文章
JS常用坐标
查看>>
使用”结构化的思考方式“来编码和使用”流程化的思考方式“来编码,孰优孰劣?...
查看>>
C#调用斑马打印机打印条码标签(支持COM、LPT、USB、TCP连接方式和ZPL、EPL、CPCL指令)【转】...
查看>>
关于git的认证方式
查看>>
字符串按照字典序排列
查看>>
IOS 开发调用打电话,发短信
查看>>
CI 框架中的日志处理 以及 404异常处理
查看>>
keepalived介绍
查看>>
css3 标签 background-size
查看>>
python itertools
查看>>
Linux内核调试技术——jprobe使用与实现
查看>>
样式、格式布局
查看>>
ubuntu设计文件权限
查看>>
Vue双向绑定原理详解
查看>>
Android基础总结(5)——数据存储,持久化技术
查看>>
关于DataSet事务处理以及SqlDataAdapter四种用法
查看>>
bootstrap
查看>>
http://lorempixel.com/ 可以快速产生假图
查看>>
工程经验总结之吹水"管理大境界"
查看>>
为什么JS动态生成的input标签在后台有时候没法获取到
查看>>