【leetcode】150. Evaluate Reverse Polish Notation

来源:互联网 发布:网站域名未授权 编辑:程序博客网 时间:2024/05/19 11:35

题目

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

思路

需要使用一个栈,用此栈存储后缀表达式中的操作数、计算过程中的中间数以及结果

代码

public int evalRPN(String[] tokens) {Stack<Integer>stack = new Stack<Integer>();int a,b = 0;for(String  s : tokens){if(s.equals("+")){stack.push(stack.pop()+stack.pop());}else if(s.equals("-")){a = stack.pop();b = stack.pop();stack.push(b-a);}else if(s.equals("*")){a = stack.pop();b = stack.pop();stack.push(a*b);}else if(s.equals("/")){a = stack.pop();b = stack.pop();stack.push(b/a);}else{stack.push(Integer.parseInt(s));}}return stack.pop();}


1 0
原创粉丝点击