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

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

  题目:

  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 解题思路:   遇到数字则将其压入栈中,遇到运算符就弹出栈顶的两个元素做相应的运算,然后将运算结果压入栈中。   最后的结果保存在栈顶。 代码:
class Solution {public:    int evalRPN(vector
&tokens) { stack
st; int operand_a = 0, operand_b = 0, tmp; stringstream ss; vector
::iterator it; for(it = tokens.begin(); it != tokens.end(); it++){ ss.clear(); if ((*it) == "+" ){ operand_b = st.top(); st.pop(); operand_a = st.top(); st.pop(); st.push(operand_a + operand_b); } else if ((*it) == "-" ){ operand_b = st.top(); st.pop(); operand_a = st.top(); st.pop(); st.push(operand_a - operand_b); } else if ((*it) == "*" ){ operand_b = st.top(); st.pop(); operand_a = st.top(); st.pop(); st.push(operand_a * operand_b); } else if ((*it) == "/" ){ operand_b = st.top(); st.pop(); operand_a = st.top(); st.pop(); st.push(operand_a / operand_b); } else{ ss.str(*it); ss >> tmp; st.push(tmp); } } return st.top(); }};

 

 

转载于:https://www.cnblogs.com/dongguangqing/p/3726272.html

你可能感兴趣的文章
利用python打开摄像头并保存
查看>>
System函数的使用说明
查看>>
Selenium-测试对象操作之:获取浏览器滚动条滚动距离
查看>>
Linux下MySQL数据库安装与配置
查看>>
Extjs String转Json
查看>>
oracle入门(4)——少而常用的命令
查看>>
打印机设置(PrintDialog)、页面设置(PageSetupDialog) 及 RDLC报表如何选择指定打印机...
查看>>
Java 虚拟机部分面试题
查看>>
二叉树的遍历问题总结
查看>>
Spring之面向切面编程AOP
查看>>
MATLAB GUI程序设计中使文本框接收多行输入的方法
查看>>
全文检索-Elasticsearch (四) elasticsearch.net 客户端
查看>>
Oracle DBMS_SESSION
查看>>
sublime复制当前行到下一行
查看>>
WPF 3D变换应用
查看>>
ArchLinux安装开源VMware Tools
查看>>
DB2 锁升级示例1
查看>>
16.RDD实战
查看>>
MainFrame知识小结(20120210)—dfsort/syncsort中的数据类型
查看>>
D - Flip tile
查看>>