150.逆波兰表达式求值

1.题目描述:

  根据逆波兰表示法,求表达式的值。

  有效的运算符包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。

  说明:

  整数除法只保留整数部分。
  给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况

  链接:https://leetcode-cn.com/problems/evaluate-reverse-polish-notation

2.解题思路及代码

  利用栈的特性,遍历表达式,若遇到运算对象则加入栈中,若遇到运算符号,则调取栈顶的2个元素进行运算,结果加到栈顶;

  代码如下:

class Solution {
    public int evalRPN(String[] tokens) {
        Stack<Integer> s=new Stack<Integer>();
        for(String x:tokens) {
            if(x.equals("+"))
                s.push(s.pop()+s.pop());
            else if(x.equals("-"))
                s.push(-s.pop()+s.pop());
            else if(x.equals("*"))
                s.push(s.pop()*s.pop());
            else if(x.equals("/")) {
                int tmp=s.pop();
                s.push(s.pop()/tmp);
            }else
                s.push(Integer.valueOf(x));
        }
        return s.pop();
    }
}

 

posted @ 2019-11-07 21:13  teensSpirit  阅读(118)  评论(0编辑  收藏  举报