150. Evaluate Reverse Polish Notation
2017-06-05 22:44
369 查看
Evaluate Reverse Polish Notation
Description
Implementation
Valid operators are +, -, *, /. Each operand may be an integer or another expression.
Some examples:
Be careful about minus like “-1”.
Description
Implementation
150. Evaluate Reverse Polish Notation
Description
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
Implementation
This problem can be tackled by stack operation. Utilize stack to store operands and when meeting with operation, pop the operands and push the result back into stack. In the end, the top element of the stack is the result we needed.Be careful about minus like “-1”.
class Solution { public: int evalRPN(vector<string>& tokens) { stack<int> operand; int size = tokens.size(); for(int idx = 0; idx < size; idx++) { int str_len = tokens[idx].size(); if(str_len == 1 && (tokens[idx] == "+" || tokens[idx] == "-" || tokens[idx] == "*" || tokens[idx] == "/")) { int op1 = operand.top(); operand.pop(); int op2 = operand.top(); operand.pop(); switch(tokens[idx][0]){ case '+': operand.push(op1+op2); break; case '-': operand.push(op2-op1); break; case '*': operand.push(op2*op1); break; case '/': operand.push(op2/op1); break; default: break; } } else { int tmp = 0; int sign = 1; if(tokens[idx][0] == '-') sign = -1; else tmp = tokens[idx][0] - '0'; for(int idx2 = 1; idx2 < str_len; idx2++) tmp = tmp*10 + tokens[idx][idx2] - '0'; operand.push(tmp*sign); } } if(operand.size() > 0) return operand.top(); else return 0; } };
相关文章推荐
- Leetcode#150 Evaluate Reverse Polish Notation
- Java for LeetCode 150 Evaluate Reverse Polish Notation
- leetcode150 Evaluate Reverse Polish Notation
- 150. Evaluate Reverse Polish Notation
- LeetCode: 150_Evaluate Reverse Polish Notation | 分析逆波兰式 | Medium
- 【LeetCode-面试算法经典-Java实现】【150-Evaluate Reverse Polish Notation(计算逆波兰式)】
- 150. Evaluate Reverse Polish Notation
- leetcode[150]Evaluate Reverse Polish Notation
- [leedcode 150] Evaluate Reverse Polish Notation
- 150. Evaluate Reverse Polish Notation
- [LeetCode]150 Evaluate Reverse Polish Notation
- leetcode[150]:Evaluate Reverse Polish Notation
- [leetcode-150]Evaluate Reverse Polish Notation(c++)
- LeetCode 150 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 [150]
- LeetCode(150) Evaluate Reverse Polish Notation
- LeetCode150 Evaluate Reverse Polish Notation