Leetcode150. 逆波兰表达式求值

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

给你一个字符串数组 tokens ,表示一个根据 逆波兰表示法 表示的算术表达式。

请你计算该表达式。返回一个表示表达式值的整数。

注意:

  • 有效的算符为 '+''-''*' 和 '/' 。
  • 每个操作数(运算对象)都可以是一个整数或者另一个表达式。
  • 两个整数之间的除法总是 向零截断 。
  • 表达式中不含除零运算。
  • 输入是一个根据逆波兰表示法表示的算术表达式。
  • 答案及所有中间计算结果可以用 32 位 整数表示。

Leetcode150. 逆波兰表达式求值_第1张图片

题解:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 

利用栈的先进后出

代码如下:

class Solution {
    public int evalRPN(String[] tokens) {
      Stack s = new Stack<>();
      for(String str : tokens) {
        if("+".equals(str)) {
          
          s.push(s.pop()+s.pop());
        }

        else if("-".equals(str)){
          //先出栈的在运算符第二位
          s.push(-s.pop() + s.pop());
        }
        else if("*".equals(str)) {
          s.push(s.pop() * s.pop());
        }
        else if("/".equals(str)){
          //先出栈的在运算符第二位
          int temp1 = s.pop();
          int temp2 = s.pop();
          s.push(temp2 / temp1);
        }
        else{
          s.push(Integer.valueOf(str));
        }
      }
      return s.pop();

    }
    
}

你可能感兴趣的:(数据结构,leetcode,栈)