leetcode-Evaluate Reverse Polish Notation
2017-03-02 17:56
323 查看
Question:
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
Solution:
总结:
1、后缀表达式求值,典型的栈应用。相应的还有中缀表达式转换后缀表达式
:使用两个栈,一个存储运算符号,一个存储数字,运算符栈一直要保证栈顶运算符号优先级最大。
2、stringstream最是耗时beat 8%,16ms
改用atoi beat 72%,9ms。效率相差一倍
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
Solution:
class Solution { public: int evalRPN(vector<string>& tokens) { int len = tokens.size(); int stack[5000]; int top = -1; int t1 = 0; int t2 = 0; for(int i = 0 ; i < len ; i++){ if(top >= 1){ t1 = stack[top]; t2 = stack[top-1]; } switch(tokens[i][0]){ case '+':stack[--top] = t1+t2;break; case '*':stack[--top] = t2*t1;break; case '/':stack[--top] = t2/t1;break; case '-':if(tokens[i].size()==1){ stack[--top] = t2-t1; break; } default: stack[++top] = atoi(tokens[i].c_str()); //stringstream ss; // ss<<tokens[i]; // ss>>stack[++top]; } } return stack[0]; } };
总结:
1、后缀表达式求值,典型的栈应用。相应的还有中缀表达式转换后缀表达式
:使用两个栈,一个存储运算符号,一个存储数字,运算符栈一直要保证栈顶运算符号优先级最大。
2、stringstream最是耗时beat 8%,16ms
改用atoi beat 72%,9ms。效率相差一倍
相关文章推荐
- 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 | Evaluate Reverse Polish Notation
- LeetCode-Evaluate Reverse Polish Notation-逆波兰式-栈的应用
- LeetCode150:Evaluate Reverse Polish Notation
- 【LeetCode刷题Java版】Evaluate Reverse Polish Notation(计算逆波兰表达式)
- leetcode-150-Evaluate Reverse Polish Notation
- 用php完成LeetCode – Evaluate Reverse Polish Notation
- Leetcode Evaluate Reverse Polish Notation
- 【LeetCode】150. 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