0


【数据结构 - 栈】:力扣题:逆波兰表达式求值

问题描述

后缀表达式的另外一个名字就是逆波兰表达式

  1. 逆波兰表达式求值 - 力扣(LeetCode)

题目分析:

题目给的是一个数组

按照实例1来举例:

借助一个栈:

通过i下标遍历数组

根据提示,遍历的如果是数字就放到栈里面,如果是运算符就开始运算

问题:

1.如何判断数组里面是数组还是运算符?

2.如何把一个数字字符串转换为一个整数?

代码步骤

第一步:

遍历数组:

第二步:

每一个元素是一个字符串,获取i下标的val值

第三步:

给定条件能判断val值是运算符还是其他的值

第四步:

进行判断

第五步:

创建栈

第六步:

不是运算符,把val值转化为整数入栈

第七步:

当遍历到后面的运算符的时候,走到else,判断到底啥运算符,然后进行计算

第八步:

循环结束,返回最后的结果

完整代码

class Solution {
    public int evalRPN(String[] tokens) {

        Stack<Integer>stack = new Stack<>();

        for(int i = 0; i< tokens.length; i++ ){
            String val = tokens[i];
            if(isOperator(val) == false){
                //如果不是运算符
                stack.push(Integer.parseInt(val));

            }else{
                //到底是啥运算符
                int num1 = stack.pop();
                int num2 = stack.pop();
                switch(val){
                    case"+":
                    stack.push(num2+num1);
                    break;
                    case"-":
                     stack.push(num2-num1);
                    break;
                    case"*":
                     stack.push(num2*num1);
                    break;
                    case"/":
                     stack.push(num2/num1);
                    break;
                }

            }

        }
        return stack.pop();

    }
    private boolean isOperator(String x){
            if(x.equals("+") || x.equals("-") || x.equals("*") || x.equals("/")){
                //为真的情况
            return true;
            }
            return false;
        }
}

本文转载自: https://blog.csdn.net/m0_64397675/article/details/125337411
版权归原作者 K稳重 所有, 如有侵权,请联系我们删除。

“【数据结构 - 栈】:力扣题:逆波兰表达式求值”的评论:

还没有评论