Evaluate Reverse Polish Notation (leetcode)
2014-11-21 17:31
471 查看
题目:
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:
题目来源:https://oj.leetcode.com/problems/evaluate-reverse-polish-notation/
解题思路:用栈来保存输入的数据,每遇到一个符号,则弹出两个数据,然后把计算结果入栈,知道vector遍历完。
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
题目来源:https://oj.leetcode.com/problems/evaluate-reverse-polish-notation/
解题思路:用栈来保存输入的数据,每遇到一个符号,则弹出两个数据,然后把计算结果入栈,知道vector遍历完。
#include<iostream> #include<vector> #include<string> #include<stack> using namespace std; void calculate(char ch,stack<int> &s) { int first=s.top(); s.pop(); int second=s.top(); s.pop(); switch(ch) { case '+': s.push(first+second); break; case '-': s.push(second-first); break; case '*': s.push(first*second); break; case '/': s.push(second/first); break; } } int evalRPN(vector<string> &tokens) { if(tokens.empty()) return 0; stack<int> s; s.push(atoi(tokens[0].c_str())); for(int i=1;i<tokens.size();i++) { bool flag=0; if(tokens[i].size()==1) switch(tokens[i][0]) { case '+':case'-':case '*':case '/': flag=1; calculate(tokens[i][0],s); break; default: break; } if(flag==0) s.push(atoi(tokens[i].c_str())); } return s.top(); } int main() { string p[5]={"-1","1","*","-1","+"}; vector<string> tokens(p,p+5); int result=evalRPN(tokens); system("pause"); return 0; }
相关文章推荐
- 【LeetCode】Evaluate Reverse Polish Notation
- leetcode之Evaluate Reverse Polish Notation
- [LeetCode] Evaluate Reverse Polish Notation, Solution
- LeetCode_Stack_Evaluate Reverse Polish Notation
- Leetcode - Evaluate Reverse Polish Notation
- leetcode150 Evaluate Reverse Polish Notation
- [LeetCode] evaluate-reverse-polish-notation
- [leetcode]Evaluate Reverse Polish Notation
- [leetcode]Evaluate Reverse Polish Notation
- [LeetCode] Evaluate Reverse Polish Notation
- Leetcode - Evaluate Reverse Polish Notation
- Leetcode Evaluate Reverse Polish Notation
- [LeetCode]Evaluate Reverse Polish Notation
- [LeetCode] Evaluate Reverse Polish Notation
- 【LeetCode】Evaluate Reverse Polish Notation
- [Leetcode] Evaluate Reverse Polish Notation (Java)
- [LeetCode] 150. Evaluate Reverse Polish Notation
- Leetcode 150:Evaluate Reverse Polish Notation
- leetcode--Evaluate Reverse Polish Notation
- leetcode_Evaluate Reverse Polish Notation