[LintCode] Evaluate Reverse Polish Notation 计算逆波兰表达式
2016-07-24 23:59
507 查看
Evaluate the value of an arithmetic expression in Reverse Polish Notation.
Valid operators are
Have you met this question in a real interview?
Yes
Example
LeetCode上的原题,请参见我之前的博客Evaluate Reverse Polish Notation。
解法一:
解法二:
Valid operators are
+,
-,
*,
/. Each operand may be an integer or another expression.
Have you met this question in a real interview?
Yes
Example
["2", "1", "+", "3", "*"] -> ((2 + 1) * 3) -> 9 ["4", "13", "5", "/", "+"] -> (4 + (13 / 5)) -> 6
LeetCode上的原题,请参见我之前的博客Evaluate Reverse Polish Notation。
解法一:
class Solution { public: /** * @param tokens The Reverse Polish Notation * @return the value */ int evalRPN(vector<string>& tokens) { stack<int> s; for (auto a : tokens) { if (a == "+" || a == "-" || a == "*" || a == "/") { if (s.size() < 2) break; int t = s.top(); s.pop(); int k = s.top(); s.pop(); if (a == "+") k += t; else if (a == "-") k -= t; else if (a == "*") k *= t; else if (a == "/") k /= t; s.push(k); } else { s.push(stoi(a)); } } return s.top(); } };
解法二:
class Solution { public: /** * @param tokens The Reverse Polish Notation * @return the value */ int evalRPN(vector<string>& tokens) { int op = tokens.size() - 1; return helper(tokens, op); } int helper(vector<string>& tokens, int& op) { string s = tokens[op]; if (s == "+" || s == "-" || s == "*" || s == "/") { int v2 = helper(tokens, --op); int v1 = helper(tokens, --op); if (s == "+") return v1 + v2; else if (s == "-") return v1 - v2; else if (s == "*") return v1 * v2; else return v1 / v2; } else { return stoi(s); } } };
相关文章推荐
- LUA 函数式编程demo
- lua 字符串处理
- Lua Go R HEXO 简单介绍
- LUA 创建文件和文件夹
- lua lfs库
- 150. Evaluate Reverse Polish Notation
- 一、windows 下安装并使用 lua
- 如何创建一个 Lua 模块
- 如何创建一个 Lua 模块
- LUA学习笔记(第18-20章)
- LUA学习笔记(第18-20章)
- 安卓属性动画之插值器(TimeInterpolator)和估值器(TypeEvaluator)
- lua MVC框架 Orbit初探
- Lua教程(二十二)
- lua os.date()
- leetcode_c++:栈:Evaluate Reverse Polish Notation(150)
- How to evaluate and motivate a speech
- leetcode150 Evaluate Reverse Polish Notation
- leetcode150 Evaluate Reverse Polish Notation
- Evaluation