leetcode 150. Evaluate Reverse Polish Notation 逆波兰表达式的计算
来源:互联网 发布:c 网络爬虫 编辑:程序博客网 时间:2024/05/20 15:58
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
本题题意就是根据给定的表达式计算结果,就是后序计算表达式。
代码如下:
import java.util.Stack;/* * 逆波兰表达式计算,就是后序 * */public class Solution { public int evalRPN(String[] tokens) { if(tokens==null || tokens.length<=0) return 0; Stack<Integer> myStack=new Stack<>(); for(int i=0;i<tokens.length;i++) { String one=tokens[i]; if(isOperator(one)) { //记着要a和b的操作数的顺序,对于 整数除法是相关的,这里也不压考虑分母为0的情况 int a=myStack.pop(); int b=myStack.pop(); int res=getRes(b,a,one); myStack.push(res); }else myStack.push(Integer.parseInt(one)); } int finRes=myStack.pop(); return finRes; } public int getRes(int a, int b, String one) { one=one.replace(" ", ""); if(one.equals("+")) return (a+b); else if(one.equals("-")) return (a-b); else if(one.equals("*")) return (a*b); else if(one.equals("/")) return (a/b); return 0; } public boolean isOperator(String one) { one=one.replace(" ", ""); if(one.equals("+") || one.equals("-") || one.equals("*") || one.equals("/") ) return true; else return false; }}
下面是C++的做法,就是使用栈做遍历
代码如下:
#include <iostream>#include <climits>#include <map>#include <vector>#include <algorithm>#include <stack>#include <sstream>using namespace std;class Solution {public: int evalRPN(vector<string>& tokens) { if (tokens.size() <= 0) return 0; stack<int> skt; for (int i = 0; i < tokens.size(); i++) { if (isOp(tokens[i])) { int a = skt.top(); skt.pop(); int b = skt.top(); skt.pop(); skt.push(getRes(b, a, tokens[i])); } else { stringstream ss; ss << tokens[i]; int a = 0; ss >> a; skt.push(a); } } int res = skt.top(); skt.pop(); return res; } int getRes(int a, int b, string op) { if (op == "+") return a + b; else if (op == "-") return a - b; else if (op == "*") return a * b; else if (op == "/") return a / b; else return 0; } bool isOp(string op) { if (op == "+" || op == "-" || op == "*" || op == "/") return true; else return false; }};
阅读全文
0 0
- leetcode Evaluate Reverse Polish Notation(计算逆波兰表达式)
- leetcode 150. Evaluate Reverse Polish Notation 逆波兰表达式的计算
- LeetCode:150. Evaluate Reverse Polish Notation(逆波兰表达式)
- Leetcode刷题记——150. Evaluate Reverse Polish Notation(计算逆波兰表达式)
- [Leetcode] Evaluate Reverse Polish Notation 逆波兰表达式
- Evaluate Reverse Polish Notation 逆波兰表达式
- 【LeetCode刷题Java版】Evaluate Reverse Polish Notation(计算逆波兰表达式)
- Leetcode 150:Evaluate Reverse Polish Notation(计算逆波兰表达式) --java实现
- 150. Evaluate Reverse Polish Notation 逆波兰表达式
- leetcode笔记:Evaluate Reverse Polish Notation(逆波兰式的计算)
- LeetCode OJ 之 Evaluate Reverse Polish Notation (求逆波兰表达式的值)
- LeetCode-150. Evaluate Reverse Polish Notation (JAVA)逆波兰表达式求值
- LeetCode 150. Evaluate Reverse Polish Notation(计算后缀表达式)
- 计算逆波兰式 Evaluate Reverse Polish Notation
- 计算逆波兰式 (Evaluate Reverse Polish Notation)
- Java Evaluate Reverse Polish Notation(逆波兰表达式)
- leetcode_2 Evaluate Reverse Polish Notation 逆波兰表达式
- 【LintCode】Evaluate Reverse Polish Notation 逆波兰表达式求值
- db file scattered read 等待事件
- C++面向对象的学习:写一个数组类
- 常见二叉树基础算法汇总
- kylin构建cube时step1报错MoveTask
- 悬浮窗,点击收缩/展开
- leetcode 150. Evaluate Reverse Polish Notation 逆波兰表达式的计算
- Android问题关于Button控件在布局中正常顺序出现的遮盖其他控件
- 百练2593:Max Sequence
- java学习笔记之: spring-aop
- 使用JSON
- spark<log4j配置控制台日志级别输出>
- 如何在一个textview中使用不同颜色的字体
- SQL常用语句
- 前端面试题及答案总结