0
点赞
收藏
分享

微信扫一扫

150. 逆波兰表达式求值(系统栈)

>150. 逆波兰表达式求值<

>evalRPN<

题目描述


一、解题思路

1、解法一( Java )

解法思路:系统栈
所有的「表达式计算」问题都离不开「栈」
插入元素的函数 push() 方法和用于弹出元素的 pop() 方法来实现栈
建立一个「数字栈」,存放所有的整数,当遇到运算符时,从栈中取出两个数进行运算,并将结果放回栈内,整个过程结束后,栈顶元素就是最终结果。
代码如下:

/**
 * @author listen1024
 * @date 2022-2-11
 * 150. 逆波兰表达式求值(系统栈)
 */
class Solution {
    public int evalRPN(String[] tokens) {
        if(tokens == null || tokens.length < 1)
            return 0;
        Stack<Integer> stack = new Stack();
        for(String token : tokens){
            if(token.equals("+") || token.equals("-") || token.equals("*") || token.equals("/")){
                int last = stack.pop();
                int pre = stack.pop();
                if(token.equals("+"))
                    stack.push(pre+last);
                else if(token.equals("-"))
                    stack.push(pre-last);
                else if(token.equals("*"))
                    stack.push(pre*last);
                else if(token.equals("/"))
                    stack.push(pre/last);
            }
            else
                stack.push(Integer.valueOf(token));
        }
        return stack.pop();
    }
}

运行结果截图如下:
运行结果截图

举报

相关推荐

0 条评论