Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Solution {
- static List<String> OPERATORS = Arrays.asList("+", "-", "*", "/");
- public int evalRPN(String[] tokens) {
- Stack<Long> stack = new Stack<Long>();
- for (String token : tokens) {
- if (isOperator(token)) {
- Long operandRight = stack.pop();
- Long operandLeft = stack.pop();
- stack.push(eval(operandLeft, operandRight, token.charAt(0)));
- } else {
- stack.push(Long.parseLong(token));
- }
- }
- return stack.pop().intValue();
- }
- boolean isOperator(String token) {
- return OPERATORS.contains(token);
- }
- Long eval(Long operandLeft, Long operandRight, char operator) {
- switch (operator) {
- case '+':
- return operandLeft + operandRight;
- case '-':
- return operandLeft - operandRight;
- case '*':
- return operandLeft * operandRight;
- case '/':
- return operandLeft / operandRight;
- default:
- throw new IllegalStateException();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement