LeetCode150.逆波兰表达式求值

发布时间 2023-10-31 19:50:43作者: 白布鸽

题目描述

给你一个字符串数组 tokens ,表示一个根据 逆波兰表示法 表示的算术表达式。
请你计算该表达式。返回一个表示表达式值的整数。

示例

image

提交的代码

import java.util.Deque;
import java.util.LinkedList;
class Solution {
    public int evalRPN(String[] tokens) {
        Deque<Integer> stack=new LinkedList<>();
        Integer firstInt=0;
        Integer secondInt=0;
        for(String str:tokens){
            if("+".equals(str)){
                stack.push(stack.pop()+stack.pop());
            }else if("-".equals(str)){
                secondInt=stack.pop();
                firstInt=stack.pop();
                stack.push(firstInt-secondInt);
            }else if("*".equals(str)){
                stack.push(stack.pop()*stack.pop());
            }else if("/".equals(str)){
                secondInt=stack.pop();
                firstInt=stack.pop();
                stack.push(firstInt/secondInt);
            }else{
                stack.push(Integer.valueOf(str));
            }
        }
        return stack.peek();
    }
}

思想

其实没什么思想,数据结构里面的例题,遇到数字就入栈,遇到运算符就将栈中的两个数字出栈并进行相应的运算,运算的结果重新返回栈中,但是在运算-和/运算的时候,要注意栈的特性,第一个出栈的数字是运算的后位数。