LeetCode | Evaluate Reverse Polish Notation
2013-12-17 11:22
423 查看
题目:
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
思路:
逆波兰式计算等式非常容易,利用堆栈即可完成。另外,程序中还需要实现整数与字符串之间的相互转换。
代码:
class Solution { public: int evalRPN(vector<string> &tokens) { stack<int> cache; for(int i = 0 ; i < tokens.size(); i++){ if(tokens[i] == "+" || tokens[i] == "-" || tokens[i] == "*" || tokens[i] == "/"){ int num2 = cache.top(); cache.pop(); int num1 = cache.top(); cache.pop(); cache.push(calculate(num1, num2, tokens[i])); } else{ cache.push(str2int(tokens[i])); } } return cache.top(); } int str2int(string s){ int result=0; int base=1; for(int i = s.size()-1;i>=0;i--){ if(s[i] == '-' && i == 0){ result *= -1; } else if(s[i] >= '0' && s[i] <= '9'){ result += base * (s[i] - '0'); base *= 10; } } return result; } int calculate(int num1, int num2, string op){ if(op == "+"){ return num1 + num2; } else if(op == "-"){ return num1 - num2; } else if(op == "*"){ return num1 * num2; }else if(op == "/"){ return num1 / num2; } } };
相关文章推荐
- [LeetCode]Evaluate Reverse Polish Notation
- Leetcode#150 Evaluate Reverse Polish Notation
- 【leetcode刷题笔记】Evaluate Reverse Polish Notation
- LeetCode150 Evaluate Reverse Polish Notation
- [leetcode] 150.Evaluate Reverse Polish Notation
- [LeetCode]题解(python):150-Evaluate Reverse Polish Notation
- leetcode 刷题之路 2 Evaluate Reverse Polish Notation
- leetcode -- Evaluate Reverse Polish Notation -- stack的运用,有知识点
- Leetcode Evaluate Reverse Polish Notation
- LeetCode-Evaluate Reverse Polish Notation
- [leetcode]Evaluate Reverse Polish Notation @ Python
- Evaluate Reverse Polish Notation -- LeetCode
- LeetCode:Evaluate Reverse Polish Notation
- Evaluate Reverse Polish Notation --leetcode
- [LeetCode] Evaluate Reverse Polish Notation
- [LeetCode]Evaluate Reverse Polish Notation
- leetcode第一刷_Evaluate Reverse Polish Notation
- [LeetCode 150] Evaluate Reverse Polish Notation
- [LeetCode] evaluate-reverse-polish-notation
- LeetCode 150 Evaluate Reverse Polish Notation