150. Evaluate Reverse Polish Notation
2017-04-09 22:33
316 查看
问题描述
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:
解决思路
对数字进行压栈,遇到符号就出栈。
代码
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) { if (tokens.empty()) return 0; stack<int> st; for(int i = 0; i < tokens.size(); ++i) { if (tokens[i][0] <= '9' && tokens[i][0] >= '0') { int num = 0; for (int j = 0; j < tokens[i].length(); ++j) { num *= 10; num += tokens[i][j]-'0'; } st.push(num); } else if (tokens[i].length() == 1){ if (tokens[i][0] == '+') { int t1 = st.top(); st.pop(); int t2 = st.top(); st.pop(); st.push(t1+t2); } else if (tokens[i][0] == '*') { int t1 = st.top(); st.pop(); int t2 = st.top(); st.pop(); st.push(t1*t2); } else if (tokens[i][0] == '/') { int t1 = st.top(); st.pop(); int t2 = st.top(); st.pop(); st.push(t2/t1); } else { int t1 = st.top(); st.pop(); int t2 = st.top(); st.pop(); st.push(t2-t1); } } else { int num = 0; for (int j = 1; j < tokens[i].length(); ++j) { num *= 10; num += tokens[i][j]-'0'; } st.push(-num); } } return st.top(); } };
相关文章推荐
- 150. Evaluate Reverse Polish Notation
- [LeetCode] 150. Evaluate Reverse Polish Notation
- LeetCode——150. Evaluate Reverse Polish Notation
- [leetcode] 150.Evaluate Reverse Polish Notation
- 150. Evaluate Reverse Polish Notation
- Leetcode 150. Evaluate Reverse Polish Notation
- 150. Evaluate Reverse Polish Notation
- LeetCode 150. Evaluate Reverse Polish Notation
- Middle-题目102:150. Evaluate Reverse Polish Notation
- Leetcode刷题记——150. Evaluate Reverse Polish Notation(计算逆波兰表达式)
- 【LeetCode】150. Evaluate Reverse Polish Notation
- Leetcode 150. Evaluate Reverse Polish Notation
- 150. Evaluate Reverse Polish Notation
- 150. Evaluate Reverse Polish Notation (Stack)
- leetcode 150. Evaluate Reverse Polish Notation
- Leetcode 150. Evaluate Reverse Polish Notation (Medium) (cpp)
- 150. Evaluate Reverse Polish Notation
- 150. Evaluate Reverse Polish Notation**
- 150. Evaluate Reverse Polish Notation
- [LeetCode]150. Evaluate Reverse Polish Notation