LeetCode150—逆波兰表达式求值 (java版)

题目描述:

标签:栈 

根据 逆波兰表示法,求表达式的值。

有效的运算符包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。

说明:

整数除法只保留整数部分。
给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况

 代码:

思路分析:逆波兰表达式求值

1、建一个栈。

2、利用增强for循环遍历,如果当前字符为数字,则压入栈中;如果当前字符为“+、-、* 、/”运算符,则弹出两个元素进行运算,并将运算结果压入栈中。

3、注意String 和 Integer 之间的 类型转换

class Solution {
    public int evalRPN(String[] tokens) {
        Stack<Integer> stack = new Stack<>();
        for(String s : tokens){
            if(s.equals("+")){
                stack.push(stack.pop() + stack.pop());
            }else if(s.equals("-")){
                stack.push(-stack.pop() + stack.pop());
            }else if(s.equals("*")){
                stack.push(stack.pop() * stack.pop());
            }else if(s.equals("/")){
                int num1 = stack.pop();
                stack.push(stack.pop() / num1);
            }else{
                stack.push(Integer.parseInt(s));
            }
        }
        return stack.pop();
    }
}

猜你喜欢

转载自blog.csdn.net/qq_40840749/article/details/114604531
今日推荐