Advertisement
Guest User

Untitled

a guest
Apr 25th, 2022
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.17 KB | None | 0 0
  1. class Solution {
  2.  
  3. static List<String> OPERATORS = Arrays.asList("+", "-", "*", "/");
  4.  
  5. public int evalRPN(String[] tokens) {
  6. Stack<Long> stack = new Stack<Long>();
  7. for (String token : tokens) {
  8. if (isOperator(token)) {
  9. Long operandRight = stack.pop();
  10. Long operandLeft = stack.pop();
  11. stack.push(eval(operandLeft, operandRight, token.charAt(0)));
  12. } else {
  13. stack.push(Long.parseLong(token));
  14. }
  15. }
  16. return stack.pop().intValue();
  17. }
  18.  
  19. boolean isOperator(String token) {
  20. return OPERATORS.contains(token);
  21. }
  22.  
  23. Long eval(Long operandLeft, Long operandRight, char operator) {
  24. switch (operator) {
  25. case '+':
  26. return operandLeft + operandRight;
  27. case '-':
  28. return operandLeft - operandRight;
  29. case '*':
  30. return operandLeft * operandRight;
  31. case '/':
  32. return operandLeft / operandRight;
  33. default:
  34. throw new IllegalStateException();
  35. }
  36. }
  37.  
  38. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement