Leetcode-Evaluate Reverse Polish Notation-java
2014-05-19 22:07
253 查看
题目:
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个栈顶元素进行操作后,将结果入栈。循环至遍历完成字符串数组为止
代码:
PS:
switch() 中可以使用字符串作为判断依据;
String to Int : Integer.parseInt(String);
由于栈操作,所以操作数2 操作符 操作数1
java.util.stack package:
Stack<E> stack name = new Stack<E>();
stack.peek();取得栈顶元素不remove;
stack.pop();remove栈顶元素并return object;
stack.empty();判栈是否为空。
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
分析:
思路:利用栈暂存参数,压栈保存,遇到操作符后弹出2个栈顶元素进行操作后,将结果入栈。循环至遍历完成字符串数组为止
代码:
import java.util.Stack; public class Solution { public int evalRPN(String[] tokens) { if(tokens.length == 0) return 0; Stack<String> sop1 = new Stack<String>(); for(int i = 0; i < tokens.length; i++){ if(tokens[i].equals("+") || tokens[i].equals("-") || tokens[i].equals("/") || tokens[i].equals("*")){ int oper1 = Integer.parseInt(sop1.pop()); int oper2 = Integer.parseInt(sop1.pop()); int temp = 0; switch (tokens[i]) { case "+": temp = oper2 + oper1; break; case "-": temp = oper2 - oper1; break; case "*": temp = oper2 * oper1; break; case "/": temp = oper2 / oper1; break; } sop1.push(Integer.toString(temp)); }else{ sop1.push(tokens[i]); } } return Integer.parseInt(sop1.pop()); } }
PS:
switch() 中可以使用字符串作为判断依据;
String to Int : Integer.parseInt(String);
由于栈操作,所以操作数2 操作符 操作数1
java.util.stack package:
Stack<E> stack name = new Stack<E>();
stack.peek();取得栈顶元素不remove;
stack.pop();remove栈顶元素并return object;
stack.empty();判栈是否为空。
相关文章推荐
- 【LeetCode-面试算法经典-Java实现】【151-Evaluate Reverse Polish Notation(计算逆波兰式)】
- 【LeetCode-面试算法经典-Java实现】【150-Evaluate Reverse Polish Notation(计算逆波兰式)】
- Leetcode 150:Evaluate Reverse Polish Notation(计算逆波兰表达式) --java实现
- LeetCode 150 — Evaluate Reverse Polish Notation(C++ Java Python)
- 【LeetCode刷题Java版】Evaluate Reverse Polish Notation(计算逆波兰表达式)
- 【leetcode】Evaluate Reverse Polish Notation 计算后缀表达式的值(JAVA)
- [Leetcode][JAVA] Evaluate Reverse Polish Notation
- Evaluate Reverse Polish Notation leetcode java
- LeetCode 150. Evaluate Reverse Polish Notation(java)
- Evaluate Reverse Polish Notation leetcode java
- LeetCode-150. Evaluate Reverse Polish Notation (JAVA)逆波兰表达式求值
- [Leetcode] Evaluate Reverse Polish Notation (Java)
- Java for LeetCode 150 Evaluate Reverse Polish Notation
- 【Leetcode】Evaluate Reverse Polish Notation JAVA
- LeetCode:Evaluate Reverse Polish Notation (Java)
- Leetcode: Evaluate Reverse Polish Notation (Java)
- python整除问题-leetcode-Evaluate Reverse Polish Notation
- LeetCode: Evaluate Reverse Polish Notation
- 天天LeetCode之Evaluate Reverse Polish Notation
- [leetcode]Evaluate Reverse Polish Notation