LeetCode解题笔记-LC2-计算逆波兰式(后缀表达式)的值(Postfix expression evaluation)

题目描述:
Calculate the value of inverse Polish (postfix expression)
The operator only contains " +", “-”, “*” and “/”, the operand may be an integer or other expressions
计算逆波兰式(后缀表达式)的值运算符仅包含"+","-“和”/".被操作数可能是整数或其他表达式
例如:

["2", "1", "+", "3", "*"] -> ((2 + 1) * 3) -> 9
["4", "13", "5", "/", "+"] -> (4 + (13 / 5)) -> 6

示例:

输入:
[“2”,“1”,"+",“3”,"*"]

输出:
9

思路分析:像这种求解逆波兰表达式的首先想到的就是栈这种数据结构,对输入的表达式进行一个个字符的扫描遍历,用一个Integer类型的栈来存储表达式中的数字以及每一次运算的结果。当扫描的字符是不是运算符即为数字时先转为Integer型再进行入栈操作,当扫描的字符是运算符时,从栈内依次弹出两个栈顶元素作为运算的数字,并按对应的运算符进行运算。将运算结果入栈,最后栈内剩下的那个数值就是运算结果。

import java.util.*;
import java.util.Stack;
public class Solution {
    public int evalRPN (String[] tokens){
         Stack<Integer> stack = new Stack<>();
        int op1=0;
        int op2=0;
        for(String s:tokens){
            switch(s){
                    case "+":
                        op2=stack.pop();
                        op1=stack.pop();
                        stack.push(op1+op2);
                        break;
                    case "-":
                        op2=stack.pop();
                        op1=stack.pop();
                        stack.push(op1-op2);
                        break;
                    case "*":
                        op2=stack.pop();
                        op1=stack.pop();
                        stack.push(op1*op2);
                        break;
                    case "/":
                        op2=stack.pop();
                        op1=stack.pop();
                        stack.push(op1/op2);
                        break;
                default:
                    stack.push(Integer.valueOf(s));
                    break;
            }
        }
        return stack.pop();
    }
}

关于栈和波兰表达式的详解:
数据结构(Java实现)-详解栈(实现中缀表达式计算器、逆波兰计算器 中缀表达式转逆波兰表达式过程)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值