80_leetcode_Evaluate Reverse Polish Notation
2014-06-20 14:54
369 查看
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:
1:注意特殊情况;2:设置堆栈,遇到数字字符串就直接进栈,遇到四则运算符号,堆栈最上层的两个元素出栈, 进行相应运算后再进栈;3:注意除数是0的情况
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
1:注意特殊情况;2:设置堆栈,遇到数字字符串就直接进栈,遇到四则运算符号,堆栈最上层的两个元素出栈, 进行相应运算后再进栈;3:注意除数是0的情况
int evalRPN(vector<string> &tokens) { stack<int> myStack; int size = (int)tokens.size(); for(int i = 0; i < size; i++) { if(isOperator(tokens[i]) == 0) { myStack.push(atoi(tokens[i].c_str())); } else { int firstNumber = myStack.top(); myStack.pop(); int secondNumber = myStack.top(); myStack.pop(); int result; switch(isOperator(tokens[i])) { case 1: result = firstNumber + secondNumber; myStack.push(result); break; case 2: result = secondNumber - firstNumber; myStack.push(result); break; case 3: result = secondNumber * firstNumber; myStack.push(result); break; case 4: if(firstNumber == 0) { myStack.push(0); } else { myStack.push(secondNumber / firstNumber); } break; } } } return myStack.top(); } int isOperator(string &tokenStr) { if(tokenStr.size() != 1) { return 0; } else { if(tokenStr[0] == '+') { return 1; } else if(tokenStr[0] == '-') { return 2; } else if(tokenStr[0] == '*') { return 3; } else if(tokenStr[0] == '/') { return 4; } else { return 0; } } }
相关文章推荐
- 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刷题Java版】Evaluate Reverse Polish Notation(计算逆波兰表达式)
- 【leetcode】Evaluate Reverse Polish Notation 计算后缀表达式的值(JAVA)
- 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 problem 2: Evaluate Reverse Polish Notation
- leetcode Evaluate Reverse Polish Notation(计算逆波兰表达式)
- [LeetCode]150 Evaluate Reverse Polish Notation
- [LeetCode] Evaluate Reverse Polish Notation
- leetcode 144: Evaluate Reverse Polish Notation
- [LeetCode] Evaluate Reverse Polish Notation, Solution
- [Leetcode]Evaluate Reverse Polish Notation